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 :
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;
Voyez-vous une erreur flagrante ? (je débute les listes chaînées)