You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用数组实现简单队列时rear值无法正常递增问题求助

问题根因

你的代码存在两个关联的错误,直接导致rear被异常重置:

  • 第一:else if的判断条件中,把相等判断符==错写为赋值符=
  • 第二:由于C语言运算符优先级中&&远高于=,你的条件rear=-1 && front ==-1实际会被解析为rear = (-1 && (front == -1)),每次执行到这个判断时都会先给rear重新赋值:
    • 第一次入队结束后,front=0、rear=0
    • 第二次、第三次调用enqueue时,-1 && front==-1的结果为假,值为0,因此rear会被强制赋值为0,这就是你看到每次进入else分支前rear都是0的原因
修复方案

把else if的条件改为正确的相等判断即可:

// 修改前
else  if(rear=-1 && front ==-1)
// 修改后
else if(rear == -1 && front == -1)
修复后运行验证

修改后执行你的main函数,输出会符合预期:

ELSE IF
Rear val after:0

Rear val before:0
ELSE
Rear val after:1
Rear val at end of else:1

Rear val before:1
ELSE
Rear val after:2
Rear val at end of else:2

内容的提问来源于stack exchange,提问作者im3dabasia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:09:03