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
Python实现数据结构(如:链表、栈、队列等)。
Python实现数据结构(如:链表、栈、队列等)。
370 0
|
前端开发 Python
Python中如何用栈实现队列
Python中如何用栈实现队列
355 0
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
298 13
|
Python
【Leetcode刷题Python】946. 验证栈序列
LeetCode题目“946. 验证栈序列”的Python解决方案,通过模拟栈的压入和弹出操作来验证给定的两个序列是否能通过合法的栈操作得到。
177 6
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
163 4
|
Python
【Leetcode刷题Python】剑指 Offer 09. 用两个栈实现队列
使用两个栈实现队列的Python解决方案,包括初始化两个栈、实现在队列尾部添加整数的appendTail方法和在队列头部删除整数的deleteHead方法,以及相应的示例操作。
130 2
|
网络协议 Python
python对tcp协议栈进行优化之一
**TCP优化摘要:** - MSS优化涉及调整TCP最大段大小,Python中可使用`socket.getsockopt()`查询MSS。 - Scapy是Python库,用于创建和发送网络包,可用于测试和优化协议栈性能。 - LwIP是轻量级TCP/IP协议栈,适合嵌入式设备,可通过分析和调整提升性能,特别是实时性和资源管理。
293 5
|
Python
【Leetcode刷题Python】232. 用栈实现队列
如何使用Python语言通过两个栈来实现队列的所有基本操作,包括入队(push)、出队(pop)、查看队首元素(peek)和判断队列是否为空(empty),并提供了相应的代码实现。
103 0
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
198 0
|
SQL 算法 数据挖掘
探索有效括号 力扣第20题:从栈到递归的多角度解法 【含图解 python】
探索有效括号 力扣第20题:从栈到递归的多角度解法 【含图解 python】

推荐镜像

更多