循环队列的判断满、空的三种方法以及具体代码实现(数组实现)


由于循环队列的特殊性,当队首指针=队尾指针的时候,既可能表示空也可能表示满,所以需要另加一个判断位。

我现在介绍的循环队列判断满空的三种方法分别是:1.设标志位法  2.预留一位法; 3.预存长度法(顾名思义,很简单)


1.设标志位法  

思路:预设一个标志,tag,初值=0,每当入队成功,tag=1;每当出队成功,tag=0;那么,当front==rear &&  tag 则表示“在入队操作之后front=rear”,显然入队造成的f=r的原因就是满了,故 front==rear &&  tag 表示队列满;同理,front==rear && !tag 表示队列空。 

例子:初始:front=-1,rear=-1,tag=0,下面对队列queue[3]执行:入1,出2,出3,入4,入5,入6,入7,出8,入9,入10  的动作。

          (1)入1:此时f=r=-1,tag=0 说明为空,可以入队,存入queue[rear++],入队之后,tag=1, rear=rear+1%3;

          (2)出2:此时f=-1,r=0,可以出队,出队内容是queue[front++],出队之后,tag=0,front=front+1%3;

          (3)出3:此时f=r=0,tag=0 说明为空,不能再出队了,过;

          (4)入4:此时f=r=0,tag=0 为空,可以入队,存入qu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值