萌新循环队列学习笔记

循环队列:

队列最简单的表示方法就是数组啊;

用数组表示队列,那么普通的方法就是简单的搞两个下标代表队列头,队列尾,然后进队,出队,但是随着入队,出队操作的进行,会使整个队列整体向后移动,队尾指针已经移到了最后,再有元素入队就会溢出,而事实上此时队中并未真的“满员”,这种现象称为“假溢出”。

为了解决队尾溢出而实际上数组仍然有空余空间的问题,一般在队列的顺序存储结构中采用循环队列的方式:rear 和 front 到达数组端点时,能折回到数组开始处,即相当于将数组头尾相接,想象成环状。

当插入和删除操作的作用单元达到数组的末端后,用公式"rear"(或 front ) % 数组长度“取余运算就可以实现折返到起始单元。

方法一:增设一个变量,记录当前队列元素个数的变量SIze,或者用一个变量Flag记录最后一次操作是入队还是出队。

根据变量Size就可以直接判断队列是否是满还是空;根据变量Flag,就可以知道当front等于rear时是满还是空;

方法二:少用一个元素的空间;队满的条件:” (rear+1) % 数组长度 “ 等于 front。队空的条件仍然是:rear等于front;






posted @ 2016-11-22 16:40  see_you_later  阅读(163)  评论(0编辑  收藏  举报