用in和out分别控制入队和出队操作,通过变量确定队列的存储空间个数、入队和出队操作次数;
时间: 2024-05-03 16:19:04 浏览: 5
好的,我可以给你一个简单的 Python 实现,来操作一个队列。
```python
class Queue:
def __init__(self, capacity):
self.capacity = capacity
self.queue = []
self.in_idx = 0
self.out_idx = 0
def enqueue(self, value):
if len(self.queue) < self.capacity:
self.queue.append(value)
self.in_idx += 1
return True
else:
return False
def dequeue(self):
if self.in_idx > self.out_idx:
value = self.queue[self.out_idx]
self.out_idx += 1
return value
else:
return None
```
这个队列有一个固定的容量,由 `capacity` 参数指定。我们用 `queue` 列表来存储队列中的元素,`in_idx` 和 `out_idx` 分别表示下一个入队元素的索引和下一个出队元素的索引。初始时,两个索引都是 0。
`enqueue` 方法用于将元素入队。如果队列还没有满,就把元素添加到 `queue` 列表的尾部,并且 `in_idx` 加 1。如果队列已经满了,方法就返回 False。
`dequeue` 方法用于将元素出队。如果队列不为空,就返回 `queue` 列表中下一个元素,并且 `out_idx` 加 1。否则,方法返回 None。
你可以调用这些方法来测试队列的功能。例如:
```python
q = Queue(5)
q.enqueue('a')
q.enqueue('b')
q.enqueue('c')
print(q.dequeue()) # 输出 'a'
print(q.dequeue()) # 输出 'b'
q.enqueue('d')
q.enqueue('e')
q.enqueue('f')
print(q.dequeue()) # 输出 'c'
print(q.dequeue()) # 输出 'd'
print(q.dequeue()) # 输出 'e'
print(q.dequeue()) # 输出 'f'
print(q.dequeue()) # 输出 None
```