<C语言数据结构二>聊聊如何解决循环队列队最后一个空间不可使用

<C语言数据结构二>聊聊如何解决循环队列队最后一个空间不可使用,第1张

前景参照:队列的基本说明以及代码实现

一、循环队列的队满队空

在常用的循环队列的使用中,我们使用队空判断(rear==front)以及队满判断(rear == (front + 1)% MAX)会发现循环队列的最后一个空间是没有办法被使用的,原因如下图所示:

如上图所见,当去判断队满时候,最后一个空间是没有办法被判断到的,故我们得新增一个flag标志位去判断!!!

二、 flag标志位法

在队列初始化的时候我们同时初始化一个flag标志位为false。在每次入队的时候我们将标志位置为true,每次出队的时候我们将标志位置为false。

  • 队空判断修改为:(rear == front) && (true == flag)
  • 队空判断修改为:(rear == front) && (false == flag)

原因:实际真正的队空队满的动作都是rear == front

  • 当上一次我们是出队动作导致前后相等的,既该队列里所有数据都被我们所删除(读取)
  • 当上一次我们是入队动作导致前后相等的,既该队列以及写满了

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1499147.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存