题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解析
栈是“先进后出”,队列是“先进先出”,可以在出的时候,先把一个栈的数据导到另一个栈中,再出。
具体的思路
入队:栈A入栈
出队:判断栈B是否为空;若为空,则将栈A所有元素出栈存入栈B中,栈B出栈;若不为空,则直接栈B出栈。
Java
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if (stack2.isEmpty()) {
while (! stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
Python
class QueueByStack:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
self.stack1.append(node)
def pop(self):
if len(self.stack2) == 0:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()