思路1:栈的特点是后进先出,队列的特性是先进先出。如果在出栈前,把栈逆置,那么不就可以实现先进先出了么。我们在进行出队时,先把栈给逆置,也就是出栈再入到辅助栈中,最后辅助栈的栈顶出栈,那么就是出队了,入队就与入栈一样。
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
//把stack1的元素出栈入栈到stack2
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
int result = stack2.pop();
//把数据复原
while(!stack2.isEmpty()){
stack1.push(stack2.pop());
}
return result;
}
}
详细解释:栈与队列的应用扩展