用两个栈实现队列
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路
栈的特点是后进先出,队列则是先进先出。通过对一组数据的两次入栈,就可让其先序入栈的数据置于顶层,即可实现队列。实际情况要复杂一些,因为push和pop往往是交替进行的。
实现方法是将A的顶层作为队列的push,B的顶层作为队列的pop,当B为空时将A中的所有数据pop并push入B,这样可以一直保证B顶层为最先进入的数据。
python代码
class Solution:
def __init__(self):
self.stack_A = []
self.stack_B = []
def push(self, node):
#将新数据push入栈A
self.stack_A.append(node)
def pop(self):
#对栈B进行pop
if self.stack_B:
#若B不为空,则直接pop
return self.stack_B.pop()
elif self.stack_A:
#若B为空,则先将A中元素依次pop并push入B,再pop
while self.stack_A:
self.stack_B.append(self.stack_A.pop())
return self.stack_B.pop()
else:
#B、A皆为空,无返回
return