ps:这里的栈都是自己用python构建的类,然后通过栈的类构建队列的类,解题思路跟书中一样,一个栈执行入队列,另一个栈负责出列
#-*- coding:utf-8 -*-
'''
descibe: 用两个栈实现一个队列
队列的声明是:分别完成在队列尾部插入节点和在队列头部删除节点
'''
class stack:
def __init__(self):
self.value = []
def update(self, val):
self.value.append(val)
def pop_out(self):
elem =None
if len(self.value) > 0:
elem = self.value.pop(-1)
return elem
def len_stack(self):
return len(self.value)
class cqueue:
def __init__(self):
self.in_stack=stack()
self.out_stack=stack()
def append(self, val):
self.in_stack.update(val)
def pop(self):
elem = None
if self.out_stack.len_stack() > 0:
elem=self.out_stack.pop_out()
elif self.in_stack.len_stack() > 0:
for i in range(self.in_stack.len_stack()):
self.out_stack.update(self.in_stack.pop_out())
elem=self.out_stack.pop_out()
return elem
c=cqueue()
for i in range(5):
c.append(i)
print(c.pop())
print(c.in_stack.value)
print(c.out_stack.value)