python写一个代码假设以数组 Q[m]存放循环队列中的元素,同时设置一个标志 tag,以tag=0和 tag=-1来区别在队头指针(front)和队尾指针(rear)相等时,队列状态为“空”还是“满”。试编写与此结构相应的插入(enqueue)和删除(dequeue)算法。
时间: 2024-09-24 13:23:52 浏览: 55
lumper:docker的分布式构建系统。 通过 tag-webhook 和队列任务从 github 拉取 repo 以供工人构建
在Python中,我们可以创建一个简单的循环队列数据结构,利用数组Q和一个标记tag来表示队列的状态。首先,我们需要初始化队列长度m、front(队头)和rear(队尾)指针。
```python
class CircularQueue:
def __init__(self, size):
self.size = size
self.queue = [None] * size
self.front = -1
self.rear = -1
# 插入操作,enqueue
def enqueue(self, value):
if self.is_full():
print("Queue is full")
else:
if self.front == -1:
self.front = 0
self.rear = (self.rear + 1) % self.size # 循环队列
self.queue[self.rear] = value
# 删除操作,dequeue
def dequeue(self):
if self.is_empty():
print("Queue is empty")
else:
removed_value = self.queue[self.front]
if self.front == self.rear: # 队列为空或满的情况
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.size
return removed_value
# 检查队列是否为空
def is_empty(self):
return self.front == -1 or self.front > self.rear
# 检查队列是否已满
def is_full(self):
return (self.rear + 1) % self.size == self.front and self.front != -1
```
这个`CircularQueue`类实现了基本的队列功能,当尝试插入到满队列或者从空队列中删除元素时,会打印出相应的错误信息。你可以通过创建该类的实例并调用enqueue和dequeue方法来操作循环队列。
阅读全文