大菜笔记录一下自己的复习进度,写一些自己的理解......
队列的顺序存储类型:
初始化队列:
判断队列是否为空:
入队操作:入队操作之前,应先判断队列是否已满(即判断是否还有空闲空间留给新元素使用)
if((Q.rear+1)%MaxSize==Q.front)
此语句用于判断队列是否已满,由于Q.front==Q.rear这句语句已经被用于判断队列是否为空,所以判断队列是否已满不能使用此举,所以使用上句进行判断,即当前rear指针指向位置的下一个位置与front指针指向的位置相同,由于我们在设定rear是原本就是让rear当前指向的是下一个等待插入新元素的位置,所以这种方法会浪费掉一个空间。
Q.rear=(Q.rear+1)%MaxSize;
每一次插入操作都会进行一次,当rear指针小于9时,执行这步操作只会使rear照常后移一位,而当rear为9时进行这一步操作,即Q.rear=(9+1)%10=0; 那么rear就会指向data[0],从而实际上实现了队列的循环。(前提是头指针不在data0,即之前有数据出队)