Python编程题33--用栈实现队列

2021-11-28  本文已影响0人  wintests

题目

栈和队列是常见的数据结构,栈的特点是 先进后出,而队列的特点是 先进先出

请使用 栈 模拟实现队列的下列操作:

说明

  1. 可以用 列表list 来模拟栈,但只允许使用栈的基本操作。
  2. 假设每次调用 pop 和 peek 都能保证队列不为空。

实现思路1

代码实现1

class MyQueue:

    def __init__(self):
        self.stack1 = []  # 输入栈
        self.stack2 = []  # 输出栈

    def push(self, x):
        self.stack1.append(x)

    def pop(self):
        if self.stack2 == []:
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        return self.stack2.pop()

    def peek(self):
        tmp = self.pop()
        self.stack2.append(tmp)
        return tmp

    def empty(self):
        return self.stack1 == [] and self.stack2 == []

实现思路2

代码实现2

class MyQueue:

    def __init__(self):
        self.stack1 = []  # 辅助栈
        self.stack2 = []  # 存放队列元素

    def push(self, x):
        while self.stack2:
            self.stack1.append(self.stack2.pop())
        self.stack1.append(x)
        while self.stack1:
            self.stack2.append(self.stack1.pop())

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

    def peek(self):
        return self.stack2[-1]

    def empty(self):
        return self.stack2 == []

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇 下一篇

猜你喜欢

热点阅读