假设循环队列中只设rear和quelen
时间: 2023-04-23 10:03:41 浏览: 369
循环队列中只设rear和quelen是不够的,因为还需要一个front指针来指向队列的头部。rear指针指向队列的尾部,quelen表示队列的长度。如果只有rear和quelen,无法确定队列的头部和尾部,也无法进行出队和入队操作。因此,循环队列中需要同时设定rear、front和quelen三个指针。
相关问题
假设循环队列中只设rear和length来分别表示队尾元素的位置和队中的元素的个数,试给出判别此循环队列的队满条件,并写出相应的入队和出队算法,要求出队时需返回队头元素
队满条件为:(rear+1) % length == front。
入队算法:
1. 判断队列是否已满,若满则返回队列已满的信息。
2. 将元素插入队尾,即将rear指针向后移动一位。若rear已经到达队列的末尾,则将其置为0。
3. 队列元素个数加1。
出队算法:
1. 判断队列是否为空,若为空则返回队列为空的信息。
2. 取出队头元素,并将队头指针向后移动一位。若front已经到达队列的末尾,则将其置为0。
3. 队列元素个数减1。
4. 返回队头元素。
假设循环队列中只设rear和length来分别指示队尾元素的位置和队中元素的个数,试给出判别此循环队列的队满条件,并写出相应的人队和出队算法,要求出队时需返回队头元素
队满条件:当队列中元素个数等于队列的长度时,队列即为满。
入队算法:
```
void EnQueue(int q[], int &rear, int &length, int x, int n){
if(length == n) {
cout << "队列已满,无法插入!" << endl;
return;
}
q[rear] = x;
rear = (rear + 1) % n;
length++;
}
```
出队算法:
```
int DeQueue(int q[], int &rear, int &length, int n){
if(length == 0) {
cout << "队列为空,无法删除!" << endl;
return -1;
}
int x = q[(rear - length + n) % n];
length--;
return x;
}
```
阅读全文