数据结构【环形队列】:实现环形队列的CRUD(增删改查)四种操作apl
时间: 2024-09-26 16:04:20 浏览: 40
Struts2实现CRUD(增 删 改 查)功能实例代码
环形队列是一种特殊的队列数据结构,它通过将队列的头部和尾部相连形成一个环,解决了传统线性队列一旦尾部满就无法再添加元素的问题。在环形队列中,元素会在“溢出”尾部后自动移动到头部开始。
以下是环形队列(Circular Queue)的CRUD操作的实现:
1. 创建 (Create):
- 初始化队列容量n。
- 定义两个指针front和rear分别表示队首和队尾的位置,初始化为0和-1(因为队尾指向下一个可以插入的位置)。
```python
class CircularQueue:
def __init__(self, size):
self.size = size
self.front = self.rear = -1
self.queue = [None] * self.size
```
2. 插入 (Insert / Enqueue):
- 如果队列已满(front == rear),则需要扩容。
- 否则, rear 指向下一个位置,并更新 rear。
```python
def enqueue(self, data):
if self.is_full():
raise Exception("Queue is full")
else:
self.rear = (self.rear + 1) % self.size
self.queue[self.rear] = data
```
3. 删除 (Delete / Dequeue):
- 如果队列为空(front == rear),抛出异常。
- 否则, front 指向下一个元素,并返回并删除该元素。
```python
def dequeue(self):
if self.is_empty():
raise Exception("Queue is empty")
else:
removed_data = self.queue[self.front]
self.front = (self.front + 1) % self.size
return removed_data
```
4. 查询 (Read / Peek):
- 如果队列为空,返回 None 或相应提示信息。
- 队首的元素可以直接读取。
```python
def peek(self):
if self.is_empty():
return None
return self.queue[self.front]
```
5. 判断队列是否空 (Is Empty) 和满 (Is Full):
- 队列为空:front == rear。
- 队列已满:(rear + 1) % self.size == front。
```python
def is_empty(self):
return self.front == self.rear
def is_full(self):
return (self.rear + 1) % self.size == self.front
```
阅读全文