Sur le principe du tassement du tableau et de l'utilisation des deux pointeurs :
- Un pointeur, disons p1, pointe sur la position où on va lire dans le tableau
- l'autre pointeur, p2, pointe sur la position où on va écrire dans le tableau
(0) Au départ, p1 et p2 sont placés au début du tableau.
(1) Si *p1 est à éliminer, alors on incrémente p1
(2) Si *p1 est à garder, alors on le copie à la position p2, on incrémente p1 et p2Et on fait cela jusqu'à ce que p1 ait parcouru tout le tableau.
Note : on peut retrouver le nombre d'éléments restant dans le tableau en faisant la différence entre p2 et l'adresse du début du tableau.
Pour illustrer, en notant '>' p1 et '<' p2 et la règle utilisée entre (), on veut éliminer x du tableau
x 1 x 2 x 3 4 x
(0) <>x 1 x 2 x 3 4 x
(1) <x >1 x 2 x 3 4 x
(2) 1 <1 >x 2 x 3 4 x
(1) 1 <1 x >2 x 3 4 x
(2) 1 2 <x 2 >x 3 4 x
(1) 1 2 <x 2 x >3 4 x
(2) 1 2 3 <2 x 3 >4 x
(2) 1 2 3 4 <x 3 4 >x
(1) 1 2 3 4 <x 3 4 x >
Résultat
1 2 3 4 x 3 4 x n=4
Partager