program Wskazniki___Listy;
uses crt;
type wsk=^lis;
lis=record
licz:integer;
nast:wsk;
end;
var g:wsk;
n:byte;
procedure tworz(var g:wsk);
var pom:wsk;
n:integer;
begin
n:=0;
repeat
new(pom);
pom^.licz:=random(1000);
n:=n+1;
pom^.nast:=g; {----------------}
g:=pom; {----------------}
until n=50;
end;
procedure wypisz(g:wsk);
var pom:wsk;
begin
pom:=g;
while pom<>nil do
begin
write(pom^.licz,' ');
pom:=pom^.nast;
end;
end;
procedure sort(g:wsk);
var pom,pom1:wsk;
buf:integer;
p:boolean;
begin
repeat
pom:=g;
pom1:=g;
p:=true;
while pom1^.nast<>nil do
begin
pom1:=pom1^.nast;
if pom^.licz>pom1^.licz then
begin
buf:=pom^.licz;
pom^.licz:=pom1^.licz;
pom1^.licz:=buf;
p:=false;
end;
pom:=pom^.nast;
end;
until p=true;
end;
procedure zwolnij(var g:wsk);
var pom:wsk;
begin
while g<>nil do
begin
pom:=g^.nast;
dispose(g);
g:=pom;
end;
end;
BEGIN
randomize;
clrscr;
g:=nil;
writeln('Oto 50 liczb umieszczonych w pamieci dynamicznej.');
writeln;
tworz(g);
wypisz(g);
writeln;
writeln('Wolna pamiec ',memavail,' bajtow.');
writeln('Wcisnij dowolny klawisz aby je posortowac.');
readkey;
sort(g);
writeln;
writeln('Oto 50 liczb posortowanych rosnaco:');
writeln;
wypisz(g);
writeln;
writeln('Wcisnij dowolny klawisz aby zwolnic pamiec.');
readkey;
zwolnij(g);
writeln('Pamiec zostala zwolniona.');
writeln('Wolna pamiec ',memavail,' bajtow.');
readkey;
END.