题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路
根据题目,要求两个栈来实现队列的Push和Pop操作,已知栈是后入先出型,队列是先入先出型,需要利用栈后入先出的特点实现队列先入先出的特点。入栈时数据存入栈stackIn, 出栈时数据从stackOut弹出。执行入栈操作时,将数据源源不断的压入栈stackIn;执行出栈操作时,将stackIn的数据一次性全部弹出,存入到stackOut中。当stackOut栈非空时,不断弹出stackOut栈中的数据顺序即为队列的Pop顺序;当stackOut中的数据为空后,再将新入栈stackIn的数据一次性存入stackOut中即可。
#python 中的栈可以用队列来代替:进栈为list.append 出战为list.pop(-1)
class Solution:
def __init__(self):
self.stackIn = []
self.stackOut = []
def push(self, node):
self.stackIn.append(node)
def pop(self):
if not self.stackOut:
while self.stackIn:
self.stackOut.append(self.stackIn.pop(-1))
return self.stackOut.pop(-1)
if __name__ == '__main__':
solution = Solution()
solution.push(1)
solution.push(2)
solution.push(3)
solution.pop()
solution.pop()
solution.push(4)
solution.pop()
solution.push(5)
solution.pop()
solution.pop()