循环队列的基本操作的实现(初始化、入队、出队、求队列长度、取队头元素、判断队空、队列的遍历、清空队列、销毁队列等),要求建立菜单进行操作选择。
时间: 2024-12-06 15:22:14 浏览: 19
循环队列是一种特殊的线性表结构,它通过将队列的一端链接到另一端来实现“头部”和“尾部”的无缝连接,避免了普通数组在队列满时需要创建新数组的问题。以下是循环队列基本操作的实现及相应的菜单操作:
1. **初始化**:创建一个固定大小的数组,并设置头指针front和尾指针rear均为0,表示队列为空。
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = capacity
self.queue = [None] * capacity
self.front = rear = 0
```
2. **入队(enqueue)**:如果队列未满,则将元素添加到尾部,更新尾指针。
```python
def enqueue(self, item):
if (rear + 1) % self.capacity == front:
print("Queue is full.")
else:
self.queue[rear] = item
rear = (rear + 1) % self.capacity
```
3. **出队(dequeue)**:如果队列非空,删除并返回头部元素,然后更新头指针。
```python
def dequeue(self):
if front == rear:
print("Queue is empty.")
else:
item = self.queue[front]
front = (front + 1) % self.capacity
return item
```
4. **求队列长度(size)**:检查front和rear之间的元素个数。
```python
def size(self):
if rear > front:
return rear - front
else:
return self.capacity - front + rear
```
5. **取队头元素(peek)**:查看队头元素而不移动,与出队类似处理。
```python
def peek(self):
if front == rear:
return None
else:
return self.queue[front]
```
6. **判断队空(is_empty)**:检查front和rear是否相等。
```python
def is_empty(self):
return front == rear
```
7. **队列遍历(traversal)**:可以先判断队列是否为空,然后按照front和rear的关系依次访问元素。
```python
def traverse(self):
if not self.is_empty():
for i in range(self.size()):
print(self.queue[(front + i) % self.capacity], end=" ")
```
8. **清空队列(clear)**:将front指针置零,相当于将所有元素移除。
```python
def clear(self):
front = rear = 0
```
9. **销毁队列(destroy)**:仅当队列不再使用时,手动释放资源。实际上,在Python中,不需要特意销毁队列,因为垃圾回收机制会自动管理内存。
阅读全文