python 循环队列
时间: 2023-10-30 18:05:56 浏览: 55
循环队列是一种特殊的队列数据结构,它在实现上使用了数组,并通过循环利用数组空间来提高效率。在Python中,可以使用列表来实现循环队列。
下面是一个简单的示例代码,演示了如何实现一个循环队列的基本操作:
```python
class CircularQueue:
def __init__(self, k):
self.queue = [None] * k
self.head = self.tail = -1
self.size = 0
self.capacity = k
def enqueue(self, value):
if self.is_full():
return False
if self.is_empty():
self.head = self.tail = 0
else:
self.tail = (self.tail + 1) % self.capacity
self.queue[self.tail] = value
self.size += 1
return True
def dequeue(self):
if self.is_empty():
return None
value = self.queue[self.head]
if self.head == self.tail:
self.head = self.tail = -1
else:
self.head = (self.head + 1) % self.capacity
self.size -= 1
return value
def front(self):
if self.is_empty():
return None
return self.queue[self.head]
def is_empty(self):
return self.size == 0
def is_full(self):
return self.size == self.capacity
```
以上代码定义了一个CircularQueue类,它有以下几个方法:
- `__init__(self, k)`: 初始化循环队列,传入队列的容量k。
- `enqueue(self, value)`: 将元素value入队列,如果队列已满则返回False。
- `dequeue(self)`: 将队头元素出队列并返回,如果队列为空则返回None。
- `front(self)`: 返回队头元素,不对队列做任何修改。
- `is_empty(self)`: 判断队列是否为空。
- `is_full(self)`: 判断队列是否已满。
可以通过创建CircularQueue对象来使用循环队列,例如:
```python
queue = CircularQueue(5)
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print(queue.front()) # 输出: 1
queue.dequeue()
print(queue.front()) # 输出: 2
```
希望这个示例能帮助到你理解如何在Python中实现循环队列。如有疑问,请随时提问。