假溢出
循环队列的容量是固定的,并且它的对头和队尾指针都可以随着元素出入队列而发生改变,
这样循环队列逻辑上就好像是一个环形存储空间,但在实际内存中,是不可能有真正的环形存储区的,
我们只是用顺序表模拟逻辑上的循环
因此,为防止发生假溢出,当我们采用循环队列时,front和rear不断加1,即使超出了地址范围,
也会自动从头开始,判断溢出,可采用取模处理
(rear+1)%QueueSize
(front+1)%QueueSize
取模即取余数,取得的值永远不会大于除数
定义一个循环队列
1
2
3
4
5
6# define MAXSIZE 100
typedef struct{
ElemType *base; ##存放内存分配基地址,也可以用数组存放
int front;
int rear;
}
初始化一个循环队列
1 | initQueue(cyclQueue *q){ |
入队列操作
1 | insertQueue(cyclQueue *q,ElemType e){ |
出队列操作
1 | DeleteQueue(cyclQueue *q,ElemType e){ |