题目描述
两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
入栈时将数据存入栈StackIn, 出栈时数据从StackOut弹出。入栈时,将数据压入栈StackIn;出栈时,将StackIn的数据全部弹出存入到StackOut中。当StackOut栈非空时,不断弹出StackOut栈中的数据顺序即为队列的pop顺序;当StackOut中的数据为空后,再将新入栈stackIn的数据全部存入StackOut中即可。
实现代码
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()