Pour créer une liste, il faut commencer par son premier élément. Le premier élément est un pointeur auquel vous allez 
allouer dynamiquement une zone mémoire. Il prendra la valeur que vous voulez, et son pointeur d’enregistrement 
suivant recevra NIL. La fonction retourne un pointeur vers le premier élément de la nouvelle liste. 
Fonction cree_liste():pointeur sur element 
Var 
pTete:pointeur sur element 
Début 
pTete←nouveau element 
pTete→pSuiv ← NIL // (*pTete).pSuiv←NIL 
Retoune pTete 
FinFonc
  Rappel  :  pTete→pSuiv  ←  NIL  se  lit  ainsi  :  (*pTete).pSuiv←NIL,  c’est­à­dire  que  le  champ  pSuiv  de 
l’enregistrement pointé par pTete reçoit la valeur NIL. 
Cette fonction amène un premier commentaire. Dans le chapitre Les sous­programmes vous avez appris la différence 
entre  les  variables  locales  et  globales.  Ici  pTete  est  une  variable  locale,  elle  sera  détruite  à  la  fin  de  la  fonction. 
Pourtant l’adresse qu’elle contient est retournée. C’est que le pointeur n’étant pas libéré, la zone mémoire allouée 
dynamiquement l’est pour toute la durée du programme. À la sortie de la fonction, la zone mémoire existe encore et 
donc son adresse est encore valide. 
Remarquez que l’affectation de la valeur NIL à pSuiv n’est pas nécessaire car c’est sa valeur par défaut lors de la 
déclaration de l’enregistrement structuré. 
Pour exploiter cette fonction, il suffit de déclarer un pointeur, et lui affecter le résultat de celle­ci : 
Programme liste1 
Var 
pTete:pointeur sur element 
Début 
pTete←cree_liste(); 
Fin
La fonction cree_liste est très simple. Peut­être pourriez­vous en profiter pour voir le mécanisme simple permettant 
de rajouter des éléments les uns à la suite des autres. La fonction cree_liste2() modifiée va vous demander de saisir 
en boucle des valeurs qui seront ajoutées les unes après les autres en fin de liste. Pour ceci vous aurez besoin de 
conserver à chaque fois trois informations : 
q Le pointeur pTete de la tête de la liste, qui devra être retourné par la fonction. 
q Le pointeur pEncours de l’élément actuel de la liste, de l’élément rajouté en fait. 
q Le  pointeur  pPrec  de  l’élément  précédent,  dont  le  pointeur  pSuiv  devra  recevoir  l’adresse de l’élément  en 
cours. 
Fonction cree_liste2() :pointeur sur element 
Var 
pTete, pEncours, pPrec :pointeurs sur element 
v :Entier 
Début 
// 1er élément 
pTete←nouveau element 
Afficher "Valeur du premier élément ?" 
Saisir pTete→valeur 
 
// Le premier élément est le précédent de l’élément suivant 
pPrec←pTete 
Répéter 
Afficher "Valeur suivante (0=sortie) ?" 
Saisir v 
Si v<>0 Alors 
// Allocation du nouvel élément 
pEncours←nouveau element 
pEncours→valeur ← v 
 
- 3 -
© ENI Editions - All rigths reserved - Jonifar lina
176
Précédent

- 176/220

Suivant