循环队列存储在数组A[0..m]中,则入队时的操作为( )。
入队操作为:rear=(rear+1)%(m+1)。
循环队列的重要操作:
1、初始化:(MAXSIZE为最大队列长度)
Q.base=(QElemType*)malloc(MAXSIZE*sizeof(QElemType));
Q.front=Q.rear=0;
2、返回Q中元素的个数
return(Q.rear—Q.front+MAXSIZE)%MAXSIZE;
3、插入元素(队尾插入)
if((Q.rear+1)%MAXSIZE==Q.front)return ERROR;∥队满判断
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;∥修改Q.rear的方法
∥Q.rear总是指向下一个可以插入新元素的位置。
4、删除元素(从队首删除)
If(Q.front==Q.rear)return ERROR;∥队空的判断
e=Q.base [Q.front];
Q.front=(Q.front+1)%MAXSIZE;
此题可知,MAXSIZE=m+1。
扩展资料
在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。 [1] 循环队列可以更简单防止伪溢出的发生,但队列大小是固定的。
在循环队列中,当队列为空时,有front=rear,而当所有队列空间全占满时,也有front=rear。为了区别这两种情况,规定循环队列最多只能有MaxSize-1个队列元素,当循环队列中只剩下一个空存储单元时,队列就已经满了。
因此,队列判空的条件是front=rear,而队列判满的条件是front=(rear+1)%MaxSize。