if(pEncours!=null) { 
System.out.print(pEncours.valeur+" "); 
parcours_recursif(pEncours.pSuiv); 
} 
} 
 
// Programme principal 
public static void main(String[] args) { 
element pTete,pPrec; 
int v; 
 
pTete=cree_liste2(); 
 
parcours_liste(pTete); 
 
System.out.println("Saisir la valeur recherchee :"); 
v=saisir(); 
 
if(existe_liste(v,pTete)) System.out.println("Trouvé !"); 
else System.out.println("Absent !"); 
 
pTete=ajout_element(2,15,pTete); 
 
parcours_liste(pTete); 
 
System.out.println("Saisir la valeur à supprimer" :); 
v=saisir(); 
pTete=suppr_element(v,pTete); 
 
parcours_recursif(pTete); 
System.out.println(); 
 
suppr_liste(pTete); 
} 
}
3. Autres exemples de listes 
a. Listes circulaires 
Une liste circulaire permet d’accéder à n’importe quel élément de la liste depuis n’importe quel autre élément sans 
passer par le pointeur de tête. 
Pour mettre en place ce type de liste, il suffit de faire pointer l’élément suivant du dernier élément sur le pointeur de 
tête. 
Dans  une  telle  liste,  les  fonctions  d’ajout  et  de  suppression  d’éléments  sont  simplifiées  et  correspondent  aux 
fonctions d’ajout et de suppression au milieu. Il y a un petit problème pour la fonction de recherche qui du coup ne 
s’arrête jamais ! Il faut donc placer un drapeau pour arrêter la recherche quand on retombe sur l’élément de départ. 
Il suffit de stocker l’adresse de départ. Si vous retombez dessus, c’est que vous avez parcouru toute la liste. 
b. Listes d’éléments triés 
Dans ce type de liste, les éléments sont placés selon un ordre défini par vous­même au sein des valeurs contenues 
dans les éléments. Ainsi vous êtes assuré de respecter cet ordre lors du parcours de la liste. 
Vous devez adapter la fonction de recherche pour faire respecter cet ordre. 
c. Listes doublement chaînées 
Dans une liste chaînée simple, le parcours ne s’effectue que dans un seul sens, et depuis un élément vous ne pouvez 
pas retourner au précédent. Une première méthode consisterait à conserver l’adresse de chaque élément précédent, 
ce qui serait possible avec l’utilisation de fonctions récursives, mais ce serait très lourd. 
L’autre possibilité consiste à utiliser des listes doublement chaînées : chaque élément ne contient non plus un seul 
pointeur, mais deux : un pour l’élément suivant, un autre pour l’élément précédent. Ainsi, vous pouvez vous déplacer 
- 12 -
© ENI Editions - All rigths reserved - Jonifar lina
185
Précédent

- 185/220

Suivant