Почему эти утверждения равны? Методы стека в java

Почему следующие утверждения эквивалентны? emptyRow и emptyCol — это стеки Integer, а Grid — двумерный массив целых чисел. Вам не нужно знать, что делает программа, но если вам интересно, это алгоритм решения головоломки судоку, который использует базовое отслеживание.

Оба утверждения позволяют программе работать без каких-либо ошибок, но я не понимаю, как это возможно, поскольку .pop() возвращает самое верхнее целое число в первой реализации, а второе сначала извлекает самые верхние элементы и извлекает целые числа. прямо под тех.

Заявление А:

Grid[emptyRow.pop()][emptyCol.pop()] = 0;

Заявление Б:

emptyRow.pop();
emptyCol.pop();
Grid[emptyRow.peek()][emptyCol.peek()] = 0;

Извините, если это глупая логическая проблема с моим кодом, я просто проверяю, есть ли что-то, чего я не знаю о том, как работают операции со стеком.


person Macalaca    schedule 14.11.2013    source источник


Ответы (1)


Утверждение А такое же, как

Grid[emptyRow.peek()][emptyCol.peek()] = 0;
emptyRow.pop();
emptyCol.pop();

Я думаю, что вы перепутали порядок, и, возможно, в вашем случае это не имеет значения, но код не тот.

person Peter Lawrey    schedule 14.11.2013