剑指offer笔记6:用两个栈实现队列(P68)
题目:用两个栈实现队列
用两个栈来实现一个队列,完成队列的Push(队尾插入)和Pop(对头删除)操作。 队列中的元素为int类型。
问题分析
用下面的例子说明一下如何用两个栈来模拟队列,这里主要模拟队列的入队和出队。
可以把stack1的入栈操作用来模拟队列的入队操作,stack2的弹栈操作模拟队列的出队操作。
- 当元素入队时,将元素压栈到stack1中,即为入队操作。
- 当元素出队时,先判断stack2是否为空。若stack2为空,则将是stack1中的全部元素逐个出栈并压入stack2中,再对stack2的栈顶元素做弹栈操作;若stack2非空,则直接对stack2的栈顶元素进行弹栈操作。即除对操作。
python代码
stack1 = []
stack2 = []
class Solution:
global stack1, stack2
def push(self, node):
stack1.append(node)
def pop(self):
if len(stack2) is 0:
while len(stack1) is not 0:
stack2.append(stack1.pop())
return stack2.pop()