实现循环队列的基本操作函数 以实现判断队列是否为满 是否为空 求队列元素个数 进队和出队等功能
时间: 2024-11-27 10:08:30 浏览: 12
循环队列详解及队列的顺序表示和实现
实现循环队列的基本操作函数通常包括以下几个部分:
1. **初始化**:创建一个固定大小的数组来存储队列元素,设置两个指针`front`和`rear`分别表示队头和队尾。如果数组长度为`capacity`,则`front`初始值为0,`rear`初始值为-1(表示空队列)。
2. **判断队列是否为空(is_empty)**:当`front == rear`时,队列为空。
3. **判断队列是否已满(is_full)**:当`(rear + 1) % capacity == front`时,队列已满。这里的`%`是取模运算,用于处理循环队列。
4. **求队列元素个数(queue_size)**:对于非空队列,计算`rear - front`,然后取模`capacity`避免越界。若`front > rear`,说明队列实际元素个数为`capacity - (front - rear)`。
5. **入队(enqueue)**:
a. 如果队列不满,则将新元素存放在`arr[rear + 1]`位置,更新`rear`指针。
b. 若队列已满,则需要处理溢出情况:先移动`front`指针到下一个位置,直到找到一个空位置,然后插入新元素。
6. **出队(dequeue)**:
a. 首先检查队列是否为空,若为空则返回错误。
b. 删除并返回`arr[front]`,同时更新`front`指针移到下一个位置(若不是队尾)。
以下是用Python实现的一个简单的循环队列类示例:
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = capacity
self.queue = [None] * capacity
self.front = self.rear = -1
def is_empty(self):
return self.front == self.rear
def is_full(self):
return (self.rear + 1) % self.capacity == self.front
def queue_size(self):
if self.is_empty():
return 0
else:
return (self.rear - self.front + self.capacity) % self.capacity
def enqueue(self, item):
if self.is_full():
print("Queue is full.")
return
if self.rear == -1:
self.front = 0
self.rear = (self.rear + 1) % self.capacity
self.queue[self.rear] = item
def dequeue(self):
if self.is_empty():
print("Queue is empty.")
return None
removed_item = self.queue[self.front]
if self.front == self.rear:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.capacity
return removed_item
```
阅读全文