建立一个循环队列,实现初始化,入队,出队,取队头元素操作
时间: 2024-10-08 17:20:50 浏览: 21
循环队列是一种特殊的线性表结构,它利用数组的方式存储数据,并通过两个指针(一个指向当前队首元素,另一个指向队尾元素)来实现队列的操作。由于数组的索引是循环的,所以在队满时插入新的元素会“环绕”到队列开始,而在队列为空时删除元素会“环绕”到最后。
以下是创建一个基本的循环队列并实现初始化、入队、出队、取队头元素操作的简单示例,这里假设我们用整型数组和两个指针`front`和`rear`:
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = 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, data):
if not self.is_full():
if self.rear == self.capacity - 1:
self.rear = 0
else:
self.rear += 1
self.queue[self.rear] = data
if self.front == -1:
self.front = 0
# 出队函数
def dequeue(self):
if not self.is_empty():
if self.front == self.rear:
self.empty_queue()
else:
temp = self.queue[self.front]
self.queue[self.front] = None
self.front += 1
if self.front == self.capacity:
self.front = 0
return temp
# 取队头元素
def peek(self):
if not self.is_empty():
return self.queue[self.front]
# 检查队列是否已满
def is_full(self):
return (self.rear + 1) % self.capacity == self.front
# 队列空时处理
def empty_queue(self):
self.front = -1
self.rear = -1
# 使用示例
cq = CircularQueue(5)
cq.enqueue(1)
cq.enqueue(2)
print(cq.peek()) # 输出: 1
print(cq.dequeue()) # 输出: 1
```