一、环形队列

1.1 数组构建环形队列

数组构建环形队列首先要搞清楚几个点:

  1. 对于环形队列,这个队列的空间可以重复使用,即只要队列还有空间就可以向队列中插入数据

  2. 环形队列重要算法----------------取模运算

  3. 明确环形队列中能存储数据的长度为队列长度-1

    注意:这里的队列有效长度为存储长度-1意思并不是指的数组最后一个下标元素不能存放数据,而是指的是在整个队列中始终只能存放4个元素,因为循环队列中设置的判断队列是否满的条件是:(rear + 1)% maxLength == head

    至于为什么要用队列长度-1作为有效存储数据长度我思考了一下,感觉是为了后面更方便的判断队列是否已满:

    rear表示队列尾部:指向当前插入数据末尾的后一个位置,初始状态指向0

    head表示队列头部:指向当前插入数据的头,出示状态指向0

    maxLength表示数组长度

    因为判断队列是否已满是通过判断(rear+1)% maxLength == head 进行判断的, 不能忘记rear是指向尾部元素后一个位置的

    当时我也会想这个rear+1的问题,如果将对列有效长度直接等于数组长度,那么判断对列已满就可以变成rear % maxLength,

    仔细一想问题挺大,rear在head后面还行,但是当rear跑到head前面时就错误大大滴。

  1. 搞清楚队列中的有效数据

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

    这里赘述一下为什么要采用这种取模的方式:我第一感觉 就是求有效长度直接用尾部rear - 头部head不就可以了吗,但是我忽略了一点

    那就是这个尾部rear可以跑到头部的前面啊,因为这是一个环形队列,当有数据弹出时,队列前面的位置就空出来了,此时如果再想插入数据就必须把尾部移到队列前面去。别忘了队列的特点是先进先出啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值