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('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.'); readkey; END.