Bonjour,
je viens de réaliser une procédure qui a pour but de retirer une cellule d'une liste chaînée ; pour cela l'adresse de celle-ci est indiquée au programme (ici a : Liste).
Le sous-programme remplit bien sa fonction de base en retirant la cellule demandée, mais dans certains cas il retire également des cellules non désirées.
Voici la procédure :
Voyez-vous une erreur flagrante ? (je débute les listes chaînées)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 procedure SupprCellule(var a : Liste;var L : Liste); var flag : integer; begin flag := 0; if L = a then {pour gérer le cas où la première cellule serait à supprimer} begin L := a^.suivant; dispose(a); flag := 1; end; while (flag <> 1) and (L <> nil) do {pour gérer tout les autres cas} begin L^.suivant := a^.suivant; dispose(a); flag := 1; end; if flag <> 1 then L := L^.suivant; end; end;
Partager