循环队列如何判满判空
时间: 2024-10-20 20:01:44 浏览: 29
循环顺序队列(+1判满)的基本操作.cpp
循环队列是一种特殊的队列数据结构,它通过将队列的两端链接起来形成一个环形来避免数组的边界检查。在循环队列中,判满和判空的操作基于两个关键的索引变量:头指针front和尾指针rear。
1. 判满(Is Full):
当新元素试图入队(rear = (rear + 1) % capacity),并且 rear 等于 head 的下一个位置时(即 (head + 1) % capacity == rear),说明队列已满,因为下一个插入的位置已经被占用,形成了一个闭环。此时,队列无法再接收新的元素。
2. 判空(Is Empty):
如果头指针和尾指针相等(front == rear),或者当 front 指向的是第一个元素而 rear 指向的是最后一个元素之后的第一个位置((front - 1) % capacity == rear),则表示队列为空,因为在循环队列中,只有一个元素的情况也被认为是空的。
以下是判断循环队列是否满和空的基本伪代码:
```plaintext
bool isQueueFull(CircularQueue& queue) {
return queue.rear == (queue.front + 1) % queue.capacity;
}
bool isQueueEmpty(CircularQueue& queue) {
return queue.front == queue.rear || queue.front == (queue.rear - 1) % queue.capacity;
}
```
阅读全文