python 循环队列从里面取值
时间: 2023-07-11 14:43:43 浏览: 139
Python面试题及答案共48道.docx
在 Python 中,可以使用列表来实现循环队列。对于一个循环队列来说,我们需要维护两个指针:队首指针 front 和队尾指针 rear。当队列为空时,front 和 rear 都指向 -1;当队列满时,rear 指向最后一个元素,front 指向第一个元素。
从循环队列中取值需要遵循以下的步骤:
1. 首先判断队列是否为空,即 front 是否等于 -1。
2. 如果队列不为空,则取出队首元素,即队列中下标为 front 的元素。
3. 取出元素后,需要将 front 指针向后移动一个位置,即 front = (front + 1) % len(queue),其中 len(queue) 表示队列的长度。
4. 返回取出的元素。
下面是一个完整的示例代码:
```python
class MyCircularQueue:
def __init__(self, k: int):
self.queue = [0] * k
self.front = -1
self.rear = -1
self.size = 0
def enQueue(self, value: int) -> bool:
if self.isFull():
return False
if self.isEmpty():
self.front = 0
self.rear = (self.rear + 1) % len(self.queue)
self.queue[self.rear] = value
self.size += 1
return True
def deQueue(self) -> bool:
if self.isEmpty():
return False
self.front = (self.front + 1) % len(self.queue)
self.size -= 1
return True
def Front(self) -> int:
if self.isEmpty():
return -1
return self.queue[self.front]
def Rear(self) -> int:
if self.isEmpty():
return -1
return self.queue[self.rear]
def isEmpty(self) -> bool:
return self.size == 0
def isFull(self) -> bool:
return self.size == len(self.queue)
```
在上述代码中,我们使用了一个列表 queue 来存储循环队列中的元素,使用了 front 和 rear 两个指针来记录队列的状态。其中 enQueue() 方法用于向队列中添加元素,deQueue() 方法用于从队列中取出元素,Front() 和 Rear() 方法用于获取队首和队尾元素。isEmpty() 和 isFull() 方法用于判断队列是否为空或已满。
阅读全文