1、编写向顺序分配的循环队列QU[n]中插入一个结点x的函数EnQueue,和从该队列中删除一个结点的函数DeQueue。
时间: 2024-12-13 08:26:03 浏览: 3
在编写顺序分配的循环队列`QU[n]`的插入(EnQueue)函数和删除(DeQueue)函数时,我们需要考虑队列的特性:先进先出(FIFO),并且队尾索引指向下一个可以插入的位置,队头索引则表示第一个元素的位置。
**EnQueue (插入操作)**
```c++
void EnQueue(int x, int n) {
// 队满处理
if (head == tail && tail == n - 1) {
cout << "Queue is full\n";
return;
}
// 如果队列未满,将新元素添加到尾部,并更新尾指针
QU[tail++] = x; // 循环队列的尾部索引
if (tail == n) { // 当尾指针等于n时,进入下一轮
tail = 0; // 由于是循环队列,尾指针回到开始位置
}
}
```
**DeQueue (删除操作)**
```c++
int DeQueue(int n) {
// 队空处理
if (head == tail) {
cout << "Queue is empty\n";
return -1; // 返回一个特殊的值,表示无法删除
}
// 删除并返回队首元素,同时移动头指针
int removedValue = QU[head]; // 保存队首元素
head++; // 提取元素后,头指针向前移动一位
if (head == n) { // 当头指针等于n时,回到起始位置
head = 0;
}
return removedValue;
}
```
阅读全文