要求:
用两个栈模拟队列,假设使用栈A与栈B模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。
分析:
假设A和B都为空,可以认为A提供入队功能,栈B提供出队功能。要入队列,入栈A即可,而出队列则需要分两种情况考虑:
(1)如果栈B不为空,则直接弹出栈B数据
(2)如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。
# -*- coding:utf-8 -*-
class Stack():
#模拟栈
def __init__(self):
self.items = []
#判断栈是否为空
def empty(self):
return len(self.items)==0
#返回栈的大小
def size(self):
return len(self.items)
#返回栈顶元素
def peek(self):
if not self.empty():
return self.items[len(self.items)-1]
else:
return None
#出栈
def pop(self):
if len(self.items)>0:
return self.items.pop()
else:
print("栈已经为空!")
return None
#入栈
def push(self,item):