描述
用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。
例子
Input:
Output:
思路
一个栈负责入队,另一个栈负责出队。
- 队列push操作,直接进第一个栈
- 队列pop操作,判断第二个栈是否为空,若空将第一个栈所有元素进栈到第二个栈中,若不为空,则第二个栈直接出栈
代码
public class Question007 {
private static Stack<Integer> stack1 = new Stack<>();
private static Stack<Integer> stack2 = new Stack<>();
public void push(Integer item){
stack1.push(item);
}
public Integer pop() throws Exception {
if(stack2.isEmpty()) {
while (!stack1.isEmpty()){
stack2.push(stack1.peek());
}
}
if(stack2.isEmpty()) {
throw new Exception("队列为空");
}
return stack2.peek();
}
}