用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
栈是先入后出,队列是先入先出。用两个栈实现先入先出的操作,一串元素大头冲下(前面的元素,也就是队列中应该先出队列的在第一个栈的下面),现在需要对这一串元素调整顺序,在第一个栈出栈,小头冲下进第二个栈。现在第二个栈是大头在上,出栈就是大头在前的顺序。
栈能起到调整元素顺序的功能,两个栈就能使元素原始保持原来的顺序。
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.stack1 = []
self.stack2 = []
def push(self, node):
# write code here
# 元素进第一个栈
self.stack1.append(node)
def pop(self):
# return xx
# 只有第二个栈空的时候才能往里面入栈
if len(self.stack2) == 0:
# 把第一个栈全部放入第二个栈
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
只有第二个栈空的时候,才能往第二个栈里入栈元素是因为如果第二个栈当前有元素,那么栈顶的元素就是下一次应该出栈的,如果在有新的元素入栈,就会把这个元素压在下面,先入先出的顺序就错了。