队列

介绍

队列是一个有序列表,可以用数组或链表来实现

遵循先入先出的原则;即:先存入队列的数据,要先取出。

数组模拟队列

队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列的声明如下图,其中maxSize是该队列的最大容量

因为队列的输出输入是分别从前后端来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而改变,rear会随着数据输入改变,如下图所示

向队列中添加数据的时候,要对比当前队列总数是否已满

问题:数组只能用一次,没有达到复用效果

解决:将这个数组使用算法,改进成一个环形的队列 取模: %

数组模拟环形队列

思路如下:

front指向队列的第一个元素,初始值为0

rear指向队列的最后一个元素的后一个位置,因为希望空出一个位置作为约定,初始值为0

当队列满时的条件是:(rear+1) % maxSize = front

当队列为空时的条件:rear == front

队列中的有效数据个数为:(rear + maxSize -front) % maxSize

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值