剑指offer08 — 用两个栈实现队列
题目
用两个栈来实现一个队列,完成队列的push和pop操作,队列中的元素为int类型
思路
栈是先进后出,后进先出;
队列是先进先出;即如何利用两个栈实现先进先出的效果,可用一个栈来接收数据,接收完数据导到第二个栈去输出即可。
解
python
class Solution:
def __init__(self):
# 定义两个栈,一个用于接收数据,一个用于输出数据;两个栈实现队列的push和pop的功能
self.acceptStack=[]
self.outputStack=[]
def push(self,node):
self.acceptStack.append(node) #利用acceptStack接收数据
def pop(self):
while self.acceptStack:
self.outputStack.append(self.acceptStack.pop()) #弹一个接一个
if self.outputStack != []:
return self.outputStack.pop()
else: #如果是空的话,说明acceptStack也是空,故return None
return None