循环队列,队满时: (rear+1)%maxsize=front 为什么要对maxsize取余呢?

2025-01-01 12:23:16
推荐回答(3个)
回答1:

MaxSize是你的数组的大小,如果最后一个元素位置被使用后,要再存下一个元素,那么按循环队列的定义,应该是存到数组的开头,而对MaxSize取余则可以使得下标从MaxSize-1变为0,然后递增,达到循环的目的。

回答2:

因为是循环队列,循环队列的思想是如果队头有空余的位置,则可以把数据插入到队头,从而是一个圈
q->front==q->rear+1明显是一个判定条件,判定当前队列是否已满,当当前队列q->front正好为0,q->rear为(maxsize-1,即整个队列的最后一个),q->rear+1就溢出了,(q->rear+1)%maxsize正好就是0,从而可以判断front和rear+1是不是同一个位置

回答3:

当前队尾rear如果向队尾插入元素则
rear + 1
如果rear + 1 >= maxsize 那么 rear = (rear+1)%maxsize(循环队列)