Procédure suppr_dernier(E :pPrec :pointeur sur element) 
Début 
pPrec→pSuiv ← NIL 
FinProc
Il faut raccorder l’élément précédent avec l’élément suivant. 
Procédure suppr_milieu(E :pPrec,pEncours : pointeurs sur element) 
Début 
pPrec→pSuiv ← pEncours→pSuiv 
FinFonc
Contrairement à l’ajout, vous pouvez tout de suite voir s’il est possible de simplifier avant d’aller plus loin, selon le 
même principe. Ainsi dans la fonction suppr_premier() pTete recevra NIL si l’élément supprimé est le seul car pTete>pSuiv vaut NIL. 
Idem pour suppr_milieu() et suppr_dernier(). Dans suppr_milieu, pEncours­>pSuiv vaut NIL si l’élément est le dernier. 
Les fonctions suppr_unique() et suppr_dernier() sont donc inutiles, sauf pour l’exemple ! 
Tout d’abord vous devez trouver l’élément à supprimer. S’il n’y est pas, il n’y a rien à supprimer. Donc si pEncours, 
contenant l’élément trouvé, vaut NIL, il n’y a rien à faire. Ensuite, il y a deux cas de figure : 
q pPrec vaut NIL : l’élément à supprimer est le premier (ou le seul). 
q pPrec est différent de NIL, l’élément à supprimer est au milieu ou en fin de liste. 
Ensuite, après avoir appelé la fonction adéquate, vous n’avez plus qu’à libérer la mémoire allouée pour l’élément, et 
passer son pointeur à NIL. 
La procédure suppr_element ne prend que deux arguments : la valeur de l’élément à supprimer, et la tête de la liste. 
Procédure suppr_element(E:vrech:entier,ES:pTete:pointeur sur element) 
Var 
pPrec, pEncours :pointeurs sur element 
Début 
recherche_liste(vrech,pTete,pPrec,pEncours:pointeurs sur elements) 
Si pEncours=NIL Alors 
Afficher "Element absent" 
Sinon 
Si pPrec=NIL Alors 
suppr_premier(pTete) 
Sinon 
suppr_milieu(pPrec,pEncours) 
FinSi 
Libérer pEncours 
pEncours←NIL 
FinProc
g. Supprimer toute la liste 
Pour supprimer tous les éléments de la liste, il suffit de supprimer tous les éléments jusqu’au dernier. Mais attention ! 
Ne supprimez pas un élément sans avoir auparavant conservé l’adresse de l’élément suivant ! Si vous ne l’avez pas 
fait, non seulement les éléments suivants sont perdus, mais la mémoire des éléments suivants ne pourra plus être 
libérée ! 
La fonction suppr_liste ne prend qu’un seul argument : la tête de la liste. 
Fonction suppr_liste(pTete :pointeur sur element) 
Var 
Supprimer un élément au milieu
Simplification
Généralisation
- 8 -
© ENI Editions - All rigths reserved - Jonifar lina
181
Précédent

- 181/220

Suivant