鱼C论坛

 找回密码
 立即注册
查看: 1541|回复: 2

关于一个循环队列的疑问

[复制链接]
发表于 2016-11-5 17:58:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先附上鱼大大的代码

假设我这里定义数组大小为4,也就是num[4],那么下标是从0到3。循环队列的初始化都是0,那么我入队列的时候是判断(p->real+1)%4是否等于
p->front。
***********************************
p->real=0;
(p->real+1)%4 !=0;
p->base[p->real]=e;
p->real=(p->real+1)%4

p->real=1;
(p->real+1)%4 !=0;
p->base[p->real]=e;
p->real=(p->real+1)%4

p->real=2;
(p->real+1)%4 !=0;
p->base[p->real]=e;
p->real=(p->real+1)%4
我的问题来了,
p->real=3;
(p->real+1)%4 ==0;
这里我的real到了3, 3+1取4的摸是等于0的,也就是执行到这里就不能继续赋值了,可是这样的的话数组最后一位不是不能赋值了吗。。。。
循环队列的疑问.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-5 18:19:47 | 显示全部楼层
我认为应该是空一位出来吧,尾指针指向数据要存放的位置,假如最后一位num[3]也存了,那么尾指针就和头指针指向同一个数据了,这样的情况明显是空队列,所以num[4]应该就只能存放3个数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-5 18:43:21 | 显示全部楼层
巴塞罗那 发表于 2016-11-5 18:19
我认为应该是空一位出来吧,尾指针指向数据要存放的位置,假如最后一位num[3]也存了,那么尾指针就和头指针 ...

你这么一说 我也觉得是这样喔,我就按照你这么理解。谢谢鱼油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 15:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表