两个队列生成一个栈
- 队列,先进先出。
- 栈,后进先出。
思路:
import queue
class Stack(object):
"""
主要思想:
队列: 先入先出
栈: 先入后出
将主队列数据放入次队列中直至主队列只剩一个元素
然后将最后一个元素返回进行出栈
最后将主次队列进行对调方便下一次出栈
"""
def __init__(self):
self.master_quene = queue.Queue()
self.minor_queue = queue.Queue()
def push(self, value):
self.master_quene.put(value)
def pop(self):
if self.master_quene.qsize() == 0:
return None
while True:
if self.master_quene.qsize() == 1:
val = self.master_quene.get()
break
self.minor_queue.put(self.master_quene.get())
self.master_quene, self.minor_queue = self.minor_queue, self.master_quene
return val
stack_object = Stack()
counts = 3
for i in range(counts):
stack_object.push("stack%s" % i)
print("主队列: ", stack_object.master_quene.qsize())
print("次队列", stack_object.minor_queue.qsize())
print("================================")
print(stack_object.pop())
print("================================")
print("主队列: ", stack_object.master_quene.qsize())
print("次队列", stack_object.minor_queue.qsize())
print("================================")
# for i in range(counts):
# print(stack_object.pop())