题目描述
'''
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型
'''
思路过程
'''
首先要知道栈和队列的特点,栈是后进先出,(单向)队列是后进后出(先进先出);一个栈显然无法完成;
但是有两个栈,就可以完成,具体是:将其中一个栈先用来接收数据,另一栈来输出数据;
当第一个栈接收数据是,是按照一个个往栈底压的,先进去显然只能后出;此时我们只有再从栈顶
取一次数据,然后再存放到第二个栈,此时第一个栈的栈顶数据就变成先进的数据;那么我们对
第二个栈取值,就相当于队列的取值顺序了!
'''

Python实现
class Solution:
def __init__(self):
self.accept_stack = []
self.output_stack = []
def push(self, node):
self.accept_stack.append(node)
def pop(self):
if self.output_stack == []:
while self.accept_stack:
self.output_stack.append(self.accept_stack.pop())
if self.output_stack != []:
return self.output_stack.pop()
else:
return None
obj = Solution()
obj.push(1)
obj.push(2)
obj.push(3)
print(obj.pop())
print(obj.pop())
print(obj.pop())
print(obj.pop())