Чтобы ответить на ваши вопросы, давайте рассмотрим, как концептуально работает стек. Позвольте мне привести пример.
Допустим, вы моете посуду. В этом примере мы можем мыть только 1 блюдо за раз. Когда вы чистите блюдо в первый раз, вы кладете его на стол. Следующее блюдо, которое вы чистите, идет поверх этого. Каждый раз, когда вы чистите блюдо, вы кладете
это вершина существующей стопки посуды. Последнее блюдо, которое вы убрали, всегда находится на вершине стека, а последовательно старые блюда - все дальше и дальше. Нижнее блюдо - то, которое было убрано сначала.
Теперь, если кто-то придет и нуждается в чистом блюде, он не будет пытаться вытащить нижнее блюдо из стека. Они просто возьмут верхнюю тарелку стека. Другими словами, они будут делать поп-операцию.
Давайте рассмотрим другой пример. Скажем, мы помещаем птицу, рыбу, собаку и кошку в стопку в таком порядке. Это будет выглядеть так
Stack after bird, fish, dog pushed
----------------------------------
top: dog
fish
bottom: bird
Stack after cat pushed
----------------------
top: cat
dog
fish
bottom: bird
Stack after a pop operation
---------------------------
top: dog
fish
bottom: bird
Когда мы выталкиваем кошку из верха стека, собака становится новой вершиной. Мы знаем это, потому что мы можем видеть весь стек. Однако код не может видеть весь стек. Так что код делает что-то умное.
Когда новое животное помещается в стек, старая вершина сохраняется вместе с тем животным, которое было только что добавлено. Другими словами, кошка помнит, что собака раньше была верхом. Зачем? Так что, если мы поп-кошка, вершина вернется к тому, что было раньше.
Это то, что возвращает top.getNext () - старая вершина после всплывающего окна, которой назначена вершина. То, что раньше было вершиной, стало текущей вершиной. Теперь мы знаем, что собака является вершиной стека.
Что это помнит, чтобы top.getNext () вернул старую вершину? Это достигается с помощью temp.setNext (вверху), который происходит при выполнении push. Когда добавляется cat, перед обновлением top, чтобы он стал cat, старый топ сохраняется с помощью cat.