為什么順序循環(huán)隊列插入要除以最大值?
因為循環(huán)隊列是一個環(huán),而這個環(huán)在達(dá)到末尾的時候再挪到下一個的時候就應(yīng)該指到初始位置了。而取余這個操作可以滿足一個數(shù)一直加但是最終結(jié)果一直在0和被除數(shù)之間循環(huán)的要求。
舉個例子,比如說一個長度為6的循環(huán)隊列: 0-1-2-3-4-5- 比如說我要加進(jìn)去8個數(shù)字0-7,每個位置一個數(shù)字。那么數(shù)字0(第1個數(shù)字)就在隊列0的位置、數(shù)字1在隊列中1的位值 ... 數(shù)字5在隊列5的位置上。那么數(shù)字6呢?
按照循環(huán)隊列的要求,5的下一個位置是0,但是怎么才能根據(jù)已知條件(第n個數(shù)字和隊列長度6)來求出這個0呢 那就要用到取余了。
6(第7個數(shù)字)%6(隊列長度) = 0 那么這個6 就放在0 的位置上 繼續(xù), 7(第8個數(shù)字)%6(隊列長度) = 1 那么這個7 就放在1 的位置上 現(xiàn)在比如說你有許多個數(shù)字要放進(jìn)一個長度為 L 的循環(huán)隊列中, 那么第n個數(shù)字要放在隊列中的位置x就是 x = ( n - 1 ) % L 總結(jié)一下取余的目的就是為了讓一個公差為1的遞增序列變?yōu)樵谝粋€從0到L范圍內(nèi)循環(huán)的數(shù)列。