您当前的位置: 首页 >  彭世瑜 Python

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

彭世瑜 发布时间:2018-10-23 10:01:21 ,浏览量:4

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

入队栈: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
"""

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

关注
打赏
1688896170
查看更多评论

彭世瑜

暂无认证

  • 4浏览

    0关注

    2727博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0477s