В такой ситуации:
stringStack.push( stringStack.pop());
Вам просто нужно помнить, что push
должен знать, какое значение нажать, прежде чем оно будет выдвинуто. Как он знает, какую ценность нажать? Оценка pop()
, конечно! Таким образом, предмет выталкивается первым, затем push
знает, какой предмет нажать, и отталкивает назад. Другими словами, A pop
внутри push
в целом ничего не делает со стеком.
Как насчет:
stringStack.push( stringStack.peek());
Вместо того, чтобы откинуть верхний элемент и затем оттолкнуть его,это будет только смотреть на верхний элемент, а затем помещать его в стек. В общем, это просто «копирование» верхнего элемента.
Вот как выглядит стек после каждой строки (слева вверху):
stringStack.push( “Jane” );
// Jane
stringStack.push( “Jess” );
// Jess Jane
stringStack.push( “Jill” );
// Jill Jess Jane
stringStack.push( stringStack.pop());
// Jill Jess Jane
stringStack.push( stringStack.peek());
// Jill Jill Jess Jane
stringStack.push( “Jim” );
// Jim Jill Jill Jess Jane
String name = stringStack.pop();
// Jill Jill Jess Jane
stringStack.push( stringStack.peek());
// Jill Jill Jill Jess Jane