1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| program amar;
uses wincrt;
type pointeur=^cellule;
cellule=record
valeur:integer;
suivant:pointeur;
end;
var debut,pt1,pt2:pointeur;
rep:integer;
procedure creation(var debut:pointeur);
var courant:pointeur; s:integer;
Begin
writeln('continuer:1 fin de liste:0 ');
courant:=nil;
s:=1;
repeat
new(debut);
write('enter la ',s,'eme valeur :'); read(debut^.valeur);
debut^.suivant:=courant;
s:=s+1;
write('continuer ou fin de liste? :'); writeln;
read(rep);
if rep=1 then courant:=debut;
until rep=0;
end;
procedure affichage(var debut:pointeur);
begin
writeln('l''affichage de la liste :');
while debut <> nil do
begin writeln(debut^.valeur); debut:=debut^.suivant; end;
end;
procedure eclatement(debut:pointeur; var pt1,pt2:pointeur);
var pc,pQ1,pQ2:pointeur;
Begin
pc:=debut;
pt1:=nil; pt2:=nil; pQ1:=nil; pQ2:=nil;
while (pc <> nil) do
begin
if (pc^.valeur >= 0) then begin
if (pt1=nil) then pt1:=pc
else pQ1^.suivant:=pc;
pQ1:=pc;
pc:=pc^.suivant;
end
else begin
if (pt2=nil) then pt2:=pc
else pQ2^.suivant:=pc;
pQ2:=pc;
pc:=pc^.suivant;
end;
pQ1^.suivant:=nil; pQ2^.suivant:=nil;
end;
End;
BEGIN
creation(debut);
affichage(debut);
eclatement(debut,pt1,pt2);
affichage(pt1);
affichage(pt2);
end. |
Partager