全站数据
8 4 2 0 5 8 1

为什么循环队列需要取余

建造师说 | 简单学习,快乐成才!         
问题更新日期:2024-10-20 01:18:51

问题描述

为什么循环队列需要取余求高手给解答
精选答案
最佳答案

因为循环队列是一个环,而这个环在达到末尾的时候再挪到下一个的时候就应该指到初始位置了。而取余这个操作可以满足一个数一直加但是最终结果一直在0和被除数之间循环的要求。

比如说一个长度为6的循环队列:0-1-2-3-4-5-

要加进去8个数字0-7,每个位置一个数字。那么数字0(第1个数字)就在队列0的位置、数字1在队列中1的位值 ... 数字5在队列5的位置上。那么数字6呢?按照循环队列的要求,5的下一个位置是0,但是怎么才能根据已知条件(第n个数字和队列长度6)来求出这个0呢 那就要用到取余了。

6(第7个数字)%6(队列长度) = 0 那么这个6 就放在0 的位置上继续,

7(第8个数字)%6(队列长度) = 1 那么这个7 就放在1 的位置上。

比如有许多个数字要放进一个长度为 L 的循环队列中, 那么第n个数字要放在队列中的位置x就是 x = ( n - 1 ) % L。

总结一下取余的目的就是为了让一个公差为1的递增序列变为在一个从0到L范围内循环的数列。