7.2. modification
procedure SuppressionPremier(var Debut: VersElement);
var Courant: VersElement;
begin { SuppressionPremier }
if Debut = nil then {chaîne déjà vide}
else begin
Courant := Debut;
Debut := Debut^.Suivant;
dispose(Courant);
end; { else }
end; { SuppressionPremier }
procedure SuppressionDernier(var Debut: VersElement);
var Courant: VersElement;
begin { SuppressionDernier }
if Debut = nil then {chaîne déjà vide}
else if Debut^.Suivant = nil then
dispose(Debut){chaîne d'un seul él.}
else begin
Courant := Debut;
{ tant qu'il y a 2 successeurs,
passe à l'élém. suivant}
while Courant^.Suivant^.Suivant <> nil do
Courant := Courant^.Suivant;
{ l'élément pointé par Courant n'a }
{ plus qu'un successeur: le dernier }
dispose(Courant^.Suivant);
end; { else }
end; { SuppressionDernier }
procedure SuppressionMilieu(Courant: VersElement);
{ supprime l'élément pointé sans modifier
le pointeur. Restriction: ne marche pas
pour le dernier élément}
var Prochain: VersElement;
begin { SuppressionMilieu }
Prochain := Courant^.Suivant;
{ copie obj. pointés et non pointeurs }
Courant^ := Prochain^;
dispose(Prochain);
end; { SuppressionMilieu }
autre possibilité :
procedure SuppressionMilieu(var Courant:VersElement);
{ - Supprime l'élément pointé et change
le pointeur pour le faire pointer
vers l'élément suivant.
- Pour qu'elle fonctionne correctement,
il faut que, lors de l'appel à cette
procédure, on utilise comme paramètre
effectif le pointeur "suivant" de
l'élément précédent. }
var Ancien: VersElement;
begin { SuppressionMilieu }
Ancien := Courant;
Courant := Courant^.Suivant;
dispose(Ancien);
end; { SuppressionMilieu }
Si l'on se trouve dans une situation où aucune de ces deux possibilités de
SuppressionMilieu ne peut être appliquée telle quelle parce que
les contraintes qui y sont liées sont trop restrictives, il faudra
envisager de modifier le premier exemple, soit en rajoutant, pour le traitement
du dernier élément, le parcours de la chaîne jusqu'à
trouver l'avant-dernier, soit en ayant
un élément "bidon" qui reste inutilisé à la fin de la chaîne et qui évite de
devoir supprimer le dernier élément. Dans ce dernier cas, une chaîne vide
contiendrait, malgré tout, au moins l'élément "bidon".
7.3. Utilisation
Table des
matières.