循环队列

实现队列的方法有很多,比如链表,动态数组等,这里主要介绍一下循环队列,首先我们用静态数组做个简单的队列:


从上图很显然可以看出,全部出队后,将无法继续入队,这样的情况也叫做“假溢出”,即使数组中,明明还有空间可以利用,但是却无法使用。为了解决这样的问题,就引入了一个叫“循环队列”这么一个方法。那么什么叫循环队列呢?
循环队列定义:
为了克服顺序队列中假溢出,通常将一维数组Queue[0]到Queue[MAXSIZE - 1]看成是一个首尾相连接的圆环,即Queue[0]与Queue[MAXSIZE - 1]相连接在一起,将这样形式的队列成为循环队列。

S1循环队列示例图:

S2循环队列各个参数的含义:
1)队列初始化
        front和rear的值都是零。
2)队列非空
        front代表的是队列的第一个元素。
        rear代表的是队列的最后一个元素的下一个元素。
3)队列空
        front和rear的值相等,不一定为零。

S3循环队列入队的伪算法:
1)将值存入rear所代表的位置。
2)rear = (rear + 1) % 数组的长度。

S4循环队列出队的伪算法:
1)取出front所代表位置的值。
2)front = (front + 1) % 数组长度。

S5如何判断循环队列为空:
1)如果front与rear的值相等,那么该循环队列为空队列。

S6如何判断循环队列已满:
1)通常使用两种方式
1.多增加一个标识参数。
2.如果 (rear + 1) % 数组长度 == front 那么,已满。

S7循环队列部分代码







 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值