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()方法