在python列表中实现顺序循环队列
时间: 2024-10-18 16:23:15 浏览: 25
在Python中,我们可以使用列表来实现一个简单的顺序循环队列。顺序队列的特点是先进先出(FIFO),即元素按照添加的顺序依次被删除。由于列表的索引操作可以直接访问元素,所以可以利用这个特性来进行插入和删除。
以下是一个基本的实现:
```python
class CircularQueue:
def __init__(self, capacity):
self.queue = [None] * capacity
self.front = -1 # 队头指针
self.rear = -1 # 队尾指针
def is_empty(self):
return self.front == -1 and self.rear == -1
def enqueue(self, item):
if (self.rear + 1) % len(self.queue) == self.front: # 列表满
print("Queue is full")
return
else:
self.rear = (self.rear + 1) % len(self.queue) # 循环更新队尾
self.queue[self.rear] = item
if self.front == -1: # 队列为空,同时入队
self.front = self.rear
def dequeue(self):
if self.is_empty(): # 队列为空
print("Queue is empty")
return None
else:
removed_item = self.queue[self.front]
if self.front == self.rear: # 队列只有一项
self.front = self.rear = -1
else:
self.front = (self.front + 1) % len(self.queue)
return removed_item
# 使用示例
cq = CircularQueue(5)
cq.enqueue(1)
cq.enqueue(2)
cq.enqueue(3)
print(cq.dequeue()) # 输出1
print(cq.dequeue())
阅读全文