循环队列的入队出队函数
时间: 2024-09-19 14:00:48 浏览: 30
循环队列是一种特殊的队列数据结构,它通过数组实现,并利用数组的索引溢出特性来模拟“头尾相连”的效果。对于循环队列,我们通常有以下几个关键操作:
1. 入队(Enqueue/Insert):当需要添加一个元素到队列尾部时,如果队列未满,直接将元素存放在数组的下一个位置;如果已满,就从数组的第一个位置开始覆盖,形成循环。
```c++
// C++ 示例
void enqueue(Queue<int>& queue, int value) {
if (queue.isFull()) {
queue.data[queue.head] = value; // 将值覆盖第一个位置
queue.head = (queue.head + 1) % queue.capacity; // 更新头部指针并处理溢出
} else {
queue.data[queue.tail] = value;
queue.tail = (queue.tail + 1) % queue.capacity; // 尾部增一,保持循环
}
}
```
2. 出队(Dequeue/Remove):从队列头部移除元素。如果队列非空,返回并删除第一个元素,然后更新头部指针;若队列为空,则无法出队。
```c++
int dequeue(Queue<int>& queue) {
if (queue.isEmpty()) {
return -1; // 或者抛出异常表示队列为空
} else {
int value = queue.data[queue.head];
queue.head = (queue.head + 1) % queue.capacity; // 移动头部指针
return value;
}
}
```
阅读全文