主题:[讨论]循环队列小问题~~
张含韵
[专家分:390] 发布于 2006-09-12 23:21:00
书上写:
队空条件是
front==rear
队满条件是
(rear+1)%MaxSize==front
(rear+1)%MaxSize不理解~~~~
回复列表 (共3个回复)
沙发
argentmoon [专家分:13260] 发布于 2006-09-13 13:06:00
MaxSize是队列数组的大小。
你想,如果rear+1大于等于这个最大值怎么办?
循环队列嘛,对MaxSize取模后又变回0了。
板凳
张含韵 [专家分:390] 发布于 2006-09-13 14:23:00
为什么用%?不明白
3 楼
argentmoon [专家分:13260] 发布于 2006-09-13 15:42:00
这么说吧
假设这样:
int queue[10];
当进行一系列进队出队操作后,front == 0, rear == 9;
怎么判断这个队列是不是已经满了呢?
(rear + 1) % 10 = 0
front = 0
所以两个是相等的,那么这个队列满了。当然,取模运算就为了不在这些情况出错
我来回复