用数组实现简单队列时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
相关产品推荐
相关产品推荐

