Algoritheme de déplacement circulaire bidirectionnel

Posted on 18/09/2008 · Posted in Programmation

Voici un petit pense bête pour réaliser un déplacement circulaire bidirectionnel dans un tableau.

1
2
3
4
5
6
7
8
9
/*
@position : Position dans le tableau souhaitée
@pointeur : Position actuel du tableau
@nbEnfant : Taille du tableau
*/
if (position >= 0)
    pointeur = position % nbEnfant ;
else
    pointeur = nbEnfant + (position % nbEnfant );

Edit :
La fonction ci-dessus ne semble pas fonctionnel pour les nombres négatifs.
Privilégier celle ci-dessous qui semble faire ces preuves.

1
2
3
4
5
position    = (position % nbChildrenDirect);
while (position < 0)
{
    position += nbChildrenDirect;
}