home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 26
/
CD_ASCQ_26_1295.iso
/
voxrom
/
textes
/
repwin08
/
annexes
/
accroc
/
xist_s_c.pas
< prev
Wrap
Pascal/Delphi Source File
|
1995-10-01
|
2KB
|
103 lines
program list_s_c; {liste simplement chaînée}
uses crt;
type TDonnee=integer;
type PCellule = ^Cellule;
Cellule = record
nb:TDonnee;
next:Pcellule;
end;
function init_liste:PCellule;
begin
init_liste:=nil;
end;
function est_vide(l:Pcellule):boolean;
begin
est_vide:= (l=nil);
end;
function suivant(l:Pcellule):Pcellule;
begin
suivant:=l^.next;
end;
function contenu(l:Pcellule):TDonnee;
begin
contenu:=l^.nb;
end;
function insere(l:Pcellule;n:TDonnee):PCellule;
var temp:PCellule;
begin
new(temp);
temp^.nb:=n;
temp^.next:=l;
insere:=temp;
end;
function supprime(l:Pcellule):Pcellule;
var temp:Pcellule;
begin
temp:=l^.next;
dispose(l);
supprime:=temp;
end;
function supprime_elem(l:PCellule;elem:TDonnee):PCellule;
begin
if est_vide(l)
then supprime_elem:=l
else if contenu(l)=elem {ATTENTION ;IL FAUDRA DEFINIR UNE FONCTION
EGALITE POUR LES TYPES COMPOSES DE TDonnee !!}
then supprime_elem:=supprime(l)
else begin
l^.next:=supprime_elem(suivant(l),elem);
supprime_elem:=l;
end;
end;
function insere_sort(l:PCellule;elem:TDonnee):PCellule;
begin
if est_vide(l)
then insere_sort:=insere(l,elem)
else if elem<=contenu(l) {ATTENTION : RELATION D'ORDRE A DEFINIR SELON
LE TYPE DE TDonnee !!!}
then insere_sort:=insere(l,elem)
else begin
l^.next:=insere_sort(suivant(l),elem);
insere_sort:=l;
end;
end;
procedure affiche(l:Pcellule);
begin
if not(est_vide(l))
then begin
writeln(contenu(l));
affiche(suivant(l));
end;
end;
var l:pcellule;
BEGIN
clrscr;
l:=init_liste;
l:=insere(l,5);
l:=insere(l,4);
l:=insere(l,3);
affiche(l);
l:=supprime_elem(l,4);
writeln;
affiche(l);
l:=insere_sort(l,9);
writeln;
affiche(l);
END.