循环队列中 当对头出队列 队尾进队列 存在front的值大于rear的情况
此时rear-front 的值就为负的
而加上Maxsize后 就刚好补过来
假设1:Maxsize=5
rear=0, front=4,
rear是指向队尾的下一个单元 也就是现在的rear指的单元没有存放数据因为front=4,若是front=0 就不是这种情况。 此时的队列长度1 ,如果不采用
Length=(rear - front + Maxsize) % Maxsize的方法
得到错误的结果是 rear-front = -4 而采用刚才的算法就真好是 1。
假设2:Maxsize=5
rear=3, front=0, 此时的对长是3,
Length=(rear - front + Maxsize) % Maxsize算的的结果也是3。相当 Length = rear - front + 0
所以, 之所以在rear-front后面加上Maxsize是为了避免假设1 当中的情况产生, 而,后面取余 是为了在避免假设1:的基础上去避免假设2:的产生。 综合来说,单存在假设1 可以不要取余,单存在假设2 在计算队长的时候可以什么都不要,只要rear-front 即可。