next up previous
Next: About this document

Exercices (pc 4)
Corrigé

1.

procedure Supprimer(x: Element; var a: Liste);
 var b,c: Liste;
 begin
  if a <> nil then
   if a^.contenu= x then
     a:=a^.suivant
   else begin
    b:=a;c:=a^.suivant;
    while c <> nil do
     if c^.contenu <> x then begin
       b:=c;
       c:=c^.suivant;
     end
     else begin 
      b^.suivant:=c^.suivant;
      c:=nil
     end
  end
 end;
2. Il suffit d'inserer en tete :
procedure retourner(a:Liste;var b: Liste);
var c: Liste;
 begin
  c:= a;
  while c <> nil do begin
   Inserer(c^.contenu,b);
   c:= c^.suivant
  end
 end;

3. On utilise une version fonctionnelle de Inserer :

function Inserer(x: Element;   a: Liste): Liste;
 var b: Liste;
 begin
  new(b);
  b^.contenu:= x;
  b^.suivant:= a;
  Inserer:= b
 end;

function concat(a: Liste; b: Liste): Liste;
 begin
  if a= nil then
   concat:= b
  else
   concat:= Inserer( a^.contenu, concat(a^.suivant,b));
 end;
Pour une execution en temps constant, il faut utiliser des listes gardées en tête et en queue.



Dominique Perrin
Mon Nov 25 14:35:31 MET 1996