使用python deque实现一个队列

发布时间 2023-07-04 10:00:36作者: 你说夕阳很美
from collections import deque

class Queue:
    def __init__(self):
        self.queue = deque()

    def enqueue(self, item):
        self.queue.append(item)

    def dequeue(self):
        if not self.is_empty():
            return self.queue.popleft()

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

    def size(self):
        return len(self.queue)

    def peek(self):
        if not self.is_empty():
            return self.queue[0]

    def __str__(self):
        return str(self.queue)


if __name__ == '__main__':
    queue = Queue()
    queue.enqueue(1)
    queue.enqueue(2)
    queue.enqueue(3)
    print(queue)  # deque([1, 2, 3])
    print(queue.peek())  # 输出 1
    queue.dequeue()
    print(queue.peek())  # 输出 2
    print(queue.dequeue())  # 输出 2
    print(queue.dequeue())  # 输出 3
    print(queue.is_empty())  # 输出 True

这个实现中,我们首先导入了deque,然后定义了一个名为Queue的类。类中包含以下方法:

  • __init__(self):初始化一个空的双向队列。
  • enqueue(self, item):向队列的右端添加一个元素。
  • dequeue(self):从队列的左端删除一个元素并返回它。如果队列为空,返回None。
  • is_empty(self):检查队列是否为空。如果队列为空,返回True;否则返回False。
  • size(self):返回队列中的元素数量。
  • peek(self):返回队列中的第一个元素但不删除它。如果队列为空,返回None。
  • __str__(self):将队列转换为字符串以便于调试。

使用这个实现,我们可以创建一个新的队列对象并使用enqueue()方法向其中添加元素。当我们想要访问队列的第一个元素时,可以使用peek()方法。要删除队列的第一个元素,可以使用dequeue()方法