Python教程

Python编程:用两个栈实现队列

本文主要是介绍Python编程:用两个栈实现队列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

用两个栈实现队列思路:
入队进入一个栈,从另一栈出队
外加一个元素传递的方法,负责将元素从入队栈转移到出队栈

入队栈:1,2,3
出队栈:3,2,1

# 先实现一个栈
class Stack():
    def __init__(self):
        self.stack = []

    def push(self, item):
        self.stack.append(item)

    def pop(self):
        return self.stack.pop()

    def is_empty(self):
        return len(self.stack) == 0


# 使用栈实现队列
class StackQueue():
    def __init__(self):
        self.stack_a = Stack()
        self.stack_b = Stack()

    # 入队操作
    def enqueue(self, item):
        self.stack_a.push(item)

    # 出队操作
    def dequeue(self):
        if self.stack_b.is_empty():
            if self.stack_a.is_empty():
                return None
            self._transfer()
        return self.stack_b.pop()

    # 栈A元素转移到栈B
    def _transfer(self):
        while (not self.stack_a.is_empty()):
            self.stack_b.push(self.stack_a.pop())


if __name__ == '__main__':
    stack_queue = StackQueue()
    stack_queue.enqueue(1)
    stack_queue.enqueue(2)
    stack_queue.enqueue(3)
    stack_queue.enqueue(4)
    print(stack_queue.dequeue())
    print(stack_queue.dequeue())
    stack_queue.enqueue(5)
    stack_queue.enqueue(6)
    print(stack_queue.dequeue())
    print(stack_queue.dequeue())
    print(stack_queue.dequeue())
    print(stack_queue.dequeue())
    print(stack_queue.dequeue())
"""
1
2
3
4
5
6
None
"""

参考
漫画:如何用栈实现队列?

这篇关于Python编程:用两个栈实现队列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!