编写一个循环队列实现入队出队操作判断对空对满等特殊情况
时间: 2024-05-11 19:18:35 浏览: 119
循环队列是一种基于数组实现的队列,它可以避免数组队列在队列头出队后,后续元素需要依次向前移动的问题。以下是一个简单的循环队列实现,包括入队、出队、判断队空、判断队满的操作。
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = capacity
self.queue = [None] * capacity
self.front = 0
self.rear = 0
def enqueue(self, data):
if self.is_full():
print("Queue is full!")
return
self.queue[self.rear] = data
self.rear = (self.rear + 1) % self.capacity
def dequeue(self):
if self.is_empty():
print("Queue is empty!")
return None
data = self.queue[self.front]
self.queue[self.front] = None
self.front = (self.front + 1) % self.capacity
return data
def is_empty(self):
return self.front == self.rear and self.queue[self.front] is None
def is_full(self):
return self.front == self.rear and self.queue[self.front] is not None
```
在这个实现中,我们用一个固定大小的数组来存储队列元素,通过 front 和 rear 两个指针来维护队列头和队列尾的位置。当队列满时,rear 指针会指向队列头,此时我们需要判断队列是否满的条件是 front == rear 且队列头不为 None。当队列空时,front 和 rear 指针相等且队列头为 None。当入队时,我们首先判断队列是否已满,若已满则返回错误信息,否则将数据存入 rear 指针所指位置并将 rear 指针后移一位。当出队时,我们首先判断队列是否为空,若为空则返回错误信息,否则将队列头元素取出并将 front 指针后移一位。
阅读全文