ORCA/C is made in Pascal. Pascal for ever. Les listes en Pascal. type Element=integer; LISTEP=^Cellules; Cellules=record Val:Element; Lien:LISTEP; end; {***********************************************************} function longueur(L:LISTEP):integer; var n:integer; P:LISTEP; begin n:=0; P:=L; while P<>nil do begin n:=n+1; P:=P^.Lien; end; longueur:=n; end; {end longueur} {***********************************************************} function ieme(L:LISTEP; k:integer; var x:Element; var erreur:boolean):integer; {erreur prend la valeur true si, et seulement si, la précondition sur le ieme n'est pas satisfaite} var i:integer; P:LISTEP; begin P:=L; erreur:=false; for i:=1 to k-1 do if P=nil then begin erreur:=true; {return} ieme:=0; end else P:=P^.Lien; if P=nil then erreur:=true; else begin x:=P^.Val; ieme:=P^.Val; end; end; {end ieme} {***********************************************************} function supprimer(var L:LISTEP; k:integer; var erreur:boolean):integer; var i:integer; P,PP:LISTEP; begin {cas où la liste est vide : } if L=nil then begin erreur:=true; {return} supprimer:=1; end; {cas particulier de la suppression du premier élément : } if k=1 then begin L:=L^.Lien; erreur:=false; {return} supprimer:=1; end; {cas général} P:=L; erreur:=false; for i:=1 to k-1 do begin PP:=P; P:=P^.Lien; if P=nil then begin erreur:=true; {return} supprimer:=1; end end; PP^.Lien:=P^.Lien; supprimer:=1; end; {end supprimer} {***********************************************************} function inserer(var L:LISTEP; k:integer; x:Element; var erreur:boolean):integer; var i:integer; C,P,PP:LISTEP; begin {cas particulier de l'insertion du premier élément : } if k=1 then begin new(C); C^.Val:=x; erreur:=false; C^.Lien:=L; L:=C; {return} inserer:=1; end; {cas général} P:=L; erreur:=false; for i:=1 to k-1 do begin if P=nil then erreur:=true; {return} inserer:=1; end; PP:=P; P:=P^.Lien; end; new(C); C^.Val:=x; C^.Lien:=P; PP^.Lien:=C; end; {end inserer}