回 帖 发 新 帖 刷新版面

主题:[讨论]循环队列小问题~~

书上写:
队空条件是  
       front==rear


队满条件是

     (rear+1)%MaxSize==front
(rear+1)%MaxSize不理解~~~~


回复列表 (共3个回复)

沙发

MaxSize是队列数组的大小。
你想,如果rear+1大于等于这个最大值怎么办?
循环队列嘛,对MaxSize取模后又变回0了。

板凳

为什么用%?不明白

3 楼

这么说吧
假设这样:
int queue[10];

当进行一系列进队出队操作后,front == 0, rear == 9;

怎么判断这个队列是不是已经满了呢?

(rear + 1) % 10 = 0
front = 0
所以两个是相等的,那么这个队列满了。当然,取模运算就为了不在这些情况出错

我来回复

您尚未登录,请登录后再回复。点此登录或注册