建立一个循环队列,完成入队和出队操作
时间: 2023-10-23 21:08:34 浏览: 94
队列的创建,入队,出队
3星 · 编辑精心推荐
循环队列是一种特殊的队列,它有一个固定的长度,当队列满时,新的元素会从队头继续入队。以下是一个使用数组实现的循环队列:
```python
class CircularQueue:
def __init__(self, k: int):
self.k = k
self.q = [None] * k
self.head = 0
self.tail = 0
def enqueue(self, value: int) -> bool:
if self.q[self.tail] is None:
self.q[self.tail] = value
self.tail = (self.tail + 1) % self.k
return True
else:
return False
def dequeue(self) -> bool:
if self.q[self.head] is not None:
self.q[self.head] = None
self.head = (self.head + 1) % self.k
return True
else:
return False
def front(self) -> int:
return self.q[self.head] if self.q[self.head] is not None else -1
def is_empty(self) -> bool:
return self.head == self.tail and self.q[self.head] is None
def is_full(self) -> bool:
return self.head == self.tail and self.q[self.head] is not None
```
其中,self.k 表示队列的长度,self.q 为存储元素的数组,self.head 表示队头的位置,self.tail 表示队尾的位置。入队操作中,若队尾位置为 None,则将元素存储到队尾,并将队尾位置加 1,若队尾位置已经存储了元素,则队列已满,无法入队。出队操作中,若队头位置不为 None,则将队头位置的元素设为 None,并将队头位置加 1,若队头位置为 None,则队列为空,无法出队。front 方法返回队头位置的元素,is_empty 方法判断队列是否为空,is_full 方法判断队列是否已满。
阅读全文