循环队列中利用count记录队中元素个数,设置标志位flag来区分空/队满的代码
时间: 2024-11-15 13:23:09 浏览: 4
javascript中利用数组实现的循环队列代码
循环队列是一种特殊的线性表结构,它通过循环引用的方式实现了“头尾相连”的特性。在循环队列中,通常会维护两个指针:front表示队首元素的下一个位置,rear表示当前所有元素的最后一个位置。另外,还需要一个变量count用于记录当前队列中的元素个数,以及一个标志位flag来标识队列的状态。
当count等于队列容量时,表示队列已满;当count等于0时,表示队列为空。以下是Python样例代码:
```python
class CircularQueue:
def __init__(self, capacity):
self.capacity = capacity
self.queue = [None] * capacity
self.front = -1
self.rear = -1
self.count = 0
# 插入元素到队尾
def enqueue(self, item):
if self.is_full():
print("Queue is full.")
return
if self.is_empty():
self.front = 0
else:
self.rear = (self.rear + 1) % self.capacity
self.queue[self.rear] = item
self.count += 1
# 从队首删除元素
def dequeue(self):
if self.is_empty():
print("Queue is empty.")
return
removed_item = self.queue[self.front]
if self.front == self.rear:
self.front = self.rear = -1
else:
self.front = (self.front + 1) % self.capacity
self.count -= 1
return removed_item
# 检查队列是否为空
def is_empty(self):
return self.count == 0
# 检查队列是否已满
def is_full(self):
return self.count == self.capacity
# 获取队列中元素的数量
def get_size(self):
return self.count
```
在这个实现中,`enqueue`操作会在队满时拒绝插入,而`dequeue`操作会在队空时返回错误。flag在这里主要是由count变量间接体现的,因为count值直接反映了队列状态。当你需要访问flag的时候,可以检查get_size()的结果。
阅读全文