顺序循环队列数据的个数,一开始我也不懂!!!!原来如此
老师在上面黑板写了一个“(rear+queue+front)%queue”,我一看为什么要取模,我一脸不知所措。
于是,老师在课堂上叫我们自己自行下去学习循环队列数据里面存储的个数。
自己也下去查了一下循环队列的数据存储个数,很多大神也分享了自己的见解,可是我看懂了一点,不过还是没懂为什么取模。
对于渣渣的我,我不知道,后来仔细想了以下确实要取模。
下面献丑了,这是对于循环队列个数的一些理解:
**rear尾指针;front头指针;queue数组长度(队列先进先出)**
说明:为什么rear在空格后面?
当rear=front时,队列可能表示空,也可能表示满,于是为了区分队空或满,于是rear=front-1。
情况一(图1队列元素不多时):rear—front
情况二(图2队列元素过多时,指针需要循环以防止假溢出):rear+(queue-front)
为了可以统一使用公式,于是产生了(rear—front+queue)%queue**。**
说明:为什么要取模?
**兄弟,我们都知道,队列里面的元素都是不可能超过queue的,所以怎么取模,它的商永远是0,而余数永远是它自己。**
小弟是趁热打铁写的,有什么错误欢迎大神指出!(360度鞠躬)