总体思想:栈1负责进队,栈2负责出队,栈2中为空时,则将栈1所有元素逐个出栈,栈2逐个进栈,直到栈1为空。(用笔在纸上画个示意图更容易理解)
public class TwoStackToQueue {
Stack<Integer> stack1 = new Stack<>();
Stack<Integer> stack2 = new Stack<>();
public void push(int m) { //进队
stack1.push(m); //每次进队都进到栈1
}
public int pop() { //出队
if (stack2.empty()) { //如果栈2为空,把栈1所有元素进到栈2
while (!stack1.empty()) {
stack2.push(stack1.pop());
}
}
int n = stack2.pop(); //每次出队操作都从栈2出
return n;
}
}