4-7 Python数据结构常考题之栈与队列

Posted WinvenChang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4-7 Python数据结构常考题之栈与队列相关的知识,希望对你有一定的参考价值。

一、栈与队列

后进先出 VS 先进先出
1.熟练掌握用 pythonlist 或者 collections.deque()实现栈和队列
2.常考题:用栈实现队列
3.leetcode implement-queue-using-stacks

用栈实现队列图示分析:
在这里插入图片描述
代码实现:

# leetcode 第232号 用栈实现队列
from collections import deque


class Stack:
    def __init__(self):
        self.items = deque()

    def push(self, val):
        return self.items.append(val)

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

    def top(self):
        return self.items[-1]  # 返回栈顶值

    def empty(self):
        return len(self.items) == 0


class MyQueue:
    def __init__(self):
        self.s1 = Stack()
        self.s2 = Stack()

    def push(self, val):
        self.s1.push(val)

    def pop(self):
        if not self.s2.empty():
            return self.s2.pop()

        while not self.s1.empty():
            val = self.s1.pop()
            self.s2.push(val)
        return self.s2.pop()

    def peek(self):
        if not self.s2.empty():
            return self.s2.top()

        while not self.s1.empty():
            val = self.s1.pop()
            self.s2.push(val)
        return self.s2.top()

    def empty(self):
        return self.s1.empty() and self.s2.empty()


def test():
    q = MyQueue()
    q.push(1)
    q.push(2)
    q.push(3)
    print(q.pop())
    print(q.pop())
    print(q.pop())

test()

以上是关于4-7 Python数据结构常考题之栈与队列的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之栈与队列

SDUT 2449 数据结构实验之栈与队列十:走迷宫

数据结构实验之栈与队列九:行编辑器

SDUT-2131_数据结构实验之栈与队列一:进制转换

SDUT 3332 数据结构实验之栈与队列五:下一较大值

SDUT-2449_数据结构实验之栈与队列十:走迷宫