大话数据结构——循环队列~2020.6.28

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队列是一种先进先出的线性表,简称FIFO(First In First Out)。允许插入的一端称为队尾,允许删除的一端称为队头。

队列顺序存储结构的不足:入队操作时间复杂度为O(1),出队操作时间复杂度为O(n)。因此,使用循环队列可大大降低出队操作的时间复杂度。

所谓循环队列,即使用两个指针分别指向队列的头和尾,即头指针和尾指针,而不必关注用于存储队列数据的数组下标。此处规定:头指针为front,尾指针为rear,头指针指向队列的第一个元素,尾指针指向队列最后一个元素的后面的一个位置,因此。不难发现,当头指针front与尾指针rear值相等时,队列为空。

特别注意:最难理解的部分,应是何时队列为满,不可再执行插入操作。此处规定,队列为空时,队列中不包含元素,队列为满时,修改条件,保留一个元素空间,也就是说,队满时,数组中还有一个空余空间,即(rear+1)% QueueSize == front 时,队满。(使用文字说明过于抽象,详见下图
在这里插入图片描述
计算队列长度的公式:(rear-front+QueueSize)% QueueSize

此处仅奉上循环队列的类定义与必要类方法,而不阐明主函数。

#include <iostream>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值