两个队列生成一个栈

  • 队列,先进先出。
  • 栈,后进先出。

思路:

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())