Vous êtes sur la page 1sur 2

Université des Sciences et de la Technologie HOUARI BOUMEDIENE

Faculté d'Electronique et d'Informatique


Département d'Informatique

Programmation et Structures de Données

Chapitre IV. Listes Chaînées


Série d'exercices : 3

Exercice 3

Ilyes KHENNAK
Maitre de Conférences Classe B

Laboratoire de Recherche en Intelligence Artificielle (LRIA)


Bureau 212, Département Informatique, FEI
Exercice 3:
Soit L une liste d'entiers positifs. Ecrire une procédure qui permet d'éclater la liste L en deux listes : LP contenant les entiers pairs et LI contenant
les entiers impairs. (sans création de nouvelles listes).
Type
Liste = Enregistrement
info : entier;
svt : ^ Liste;
Fin;
Procédure ECLATEMENT(E/L : ^Liste; S/LP, LI : ^Liste);
Var
PLP, PLI : ^ Liste; /* PLP & PLI sont des pointeurs intermédiaires */
Début
LP  NULL; /* Initialiser LP à NULL */
LI  NULL; /* Initialiser LI à NULL */
Tant que (L<>NULL) /* Parcourir les éléments de L */
Faire
Si (L^.info mod 2 = 0) Alors /* Si l'élément pointé par L est pair */
Si (LP = NULL) Alors LP  L; PLP  LP; /* Si LP est vide, pointer LP & PLP sur le 1er élément de L */
Sinon PLP^.svt  L; PLP PLP^.svt; /* pointer.svt de PLP sur l'élément pointé par L */
Fsi;
Sinon
Si (LI = NULL) Alors LI  L; PLI  LI;
Sinon PLI^.svt  L; PLI PLI^.svt;
Fsi;
Fsi;
L  L^.svt; /* Pointer L sur l'élément suivant */
Fait;
PLI^.svt  NULL; /* Initialiser la partie pointeur du dernier élément à NULL */
PLP^.svt  NULL; /* Initialiser la partie pointeur du dernier élément à NULL */
Fin;
Slide 2 sur 2

Vous aimerez peut-être aussi