1.题目
用两个栈实现队列
2.描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
3.解题思路
元素先依次进入栈A,再从栈A依次弹出到栈B,然后弹出栈B顶部的元素,整个过程就是一个队列的先进先出。
python实现
class Solution:
def __init__(self):
self.stackA = []
self.stackB = []
def push(self, node):
if self.stackB:
while not self.stackB:
self.stackA.append(self.stackB.pop())
self.stackA.append(node)
def pop(self):
if self.stackB:
return self.stackB.pop()
elif not self.stackA:
return None
else:
while self.stackA:
self.stackB.append(self.stackA.pop())
return self.stackB.pop()
注意:
1.“进队列时”,若队列中还有元素,即栈B中的元素不为空,此时就先将栈B的元素倒回到栈A中,保持在“进队列状态”;
2.“出队列时”,将栈1的元素全部弹到栈2中,保持在“出队列状态”。