# 思路:两个队列,队列1只负责压栈,队列2只负责出栈
class Two_queue(object):
def __init__(self):
self._oneli=[]
self._twoli=[]
def entrance(self,item):
'''队列模拟进栈'''
self._oneli.append(item)
def popup(self):
'''队列模拟出栈'''
if len(self._oneli)==0:
return None
while len(self._oneli)!=1:
# 将队列1的元素弹出给队列2,留下一个元素用来弹出
# 因为最终弹出的是后进的,所以从头部弹出
self._twoli.append(self._oneli.pop(0))
# 交换队列1和队列2的位置
self._oneli,self._twoli=self._twoli,self._oneli
return self._twoli.pop(0)
if __name__ == '__main__':
stacks=Two_queue()
stacks.entrance(1)
stacks.entrance(2)
stacks.entrance(3)
stacks.entrance(4)
stacks.entrance(5)
print(stacks.popup())
print(stacks.popup())
print(stacks.popup())
print(stacks.popup())
print(stacks.popup())
两个队列实现一个栈结构
猜你喜欢
转载自blog.csdn.net/qlzy_5418/article/details/85203255
今日推荐
周排行