用两个栈模拟队列,首先,要清楚两个数据结构的特点。栈是先进后出而队列是先进先出。显然,一个栈是没有办法实现队列的功能,这里我们需要一个插入栈,和一个弹出栈。插入栈执行队列的插入功能,弹出栈执行队列的弹出功能。
class Stack():
def __init__(self):
self.items=[]
def is_empty(self):
return len(self.items)==0
def pop(self):
if self.is_empty():
print("栈空了")
return None
else:
return self.items.pop()
def push(self,data):
self.items.append(data)
def peek(self):
if self.is_empty():
return None
else:
return self.items[len(self.items)-1]
class Myqueue():
def __init__(self):
self.rustack=Stack()
self.chustack=Stack()
def enqueue(self,data):
self.rustack.push(data)
def popqueue(self):
if self.chustack.is_empty():
while not self.rustack.is_empty():
self.chustack.push(self.rustack.peek())
self.rustack.pop()
first=self.chustack.peek()
self.chustack.pop()
return first
if __name__=="__main__":
s=Myqueue()
s.enqueue(1)
s.enqueue(2)
s.popqueue()