帅气的小明 发表于 2016-11-5 17:58:37

关于一个循环队列的疑问

首先附上鱼大大的代码

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

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

p->real=2;
(p->real+1)%4 !=0;
p->base=e;
p->real=(p->real+1)%4
我的问题来了,
p->real=3;
(p->real+1)%4 ==0;
这里我的real到了3, 3+1取4的摸是等于0的,也就是执行到这里就不能继续赋值了,可是这样的的话数组最后一位不是不能赋值了吗。。。。

巴塞罗那 发表于 2016-11-5 18:19:47

我认为应该是空一位出来吧,尾指针指向数据要存放的位置,假如最后一位num也存了,那么尾指针就和头指针指向同一个数据了,这样的情况明显是空队列,所以num应该就只能存放3个数据。

帅气的小明 发表于 2016-11-5 18:43:21

巴塞罗那 发表于 2016-11-5 18:19
我认为应该是空一位出来吧,尾指针指向数据要存放的位置,假如最后一位num也存了,那么尾指针就和头指针 ...

你这么一说 我也觉得是这样喔,我就按照你这么理解。谢谢鱼油
页: [1]
查看完整版本: 关于一个循环队列的疑问