建立一个循环队列,实现入队和出队
时间: 2023-10-23 12:22:09 浏览: 130
的操作。
循环队列是一种特殊的队列,它与普通队列最大的区别在于循环队列是一种循环存储结构,即队列的头尾相接,形成一个环形的存储空间。
循环队列的入队操作和普通队列的入队操作类似,只是需要注意队列满的情况,如果队列已满,则需要将队列的尾部指针指向队列的头部。循环队列的出队操作也类似,只是需要注意队列空的情况,如果队列已空,则需要将队列的头部指针指向队列的尾部。
以下是一个循环队列的Python实现:
```python
class CircularQueue:
def __init__(self, size):
self.size = size
self.queue = [None] * size
self.head = -1
self.tail = -1
def is_empty(self):
return self.head == -1
def is_full(self):
return (self.tail + 1) % self.size == self.head
def enqueue(self, item):
if self.is_full():
print("Queue is full")
else:
if self.head == -1:
self.head = 0
self.tail = (self.tail + 1) % self.size
self.queue[self.tail] = item
def dequeue(self):
if self.is_empty():
print("Queue is empty")
else:
item = self.queue[self.head]
if self.head == self.tail:
self.head = -1
self.tail = -1
else:
self.head = (self.head + 1) % self.size
return item
```
在这个实现中,我们使用了一个列表来存储循环队列的元素,使用两个指针head和tail来分别指向队列的头部和尾部。is_empty和is_full方法分别用于判断队列是否为空和是否已满。enqueue方法用于入队操作,如果队列已满,则输出提示;否则,将元素添加到队列的尾部,并将tail指针向后移动一个位置。dequeue方法用于出队操作,如果队列已空,则输出提示;否则,将队列头部的元素弹出,并将head指针向后移动一个位置。注意,在出队操作时,如果队列中只有一个元素,则需要将head和tail指针都指向-1。
阅读全文