Pascal II.
01. Eljárások, függv...
01. Gyakorló feladatok
02. Felsorolt típus, ...
02. Gyakorló feladatok
03. Állományok kezelése
03. Gyakorló feladatok
04. Unitok, CRT unit
04. Gyakorló feladatok
05. DOS unit, rendezé...
05. Gyakorló feladatok
06. Rekurzió, quicksort
06. Gyakorló feladatok
07. Backtracking
07. Gyakorló feladatok
08. GRAPH unit
08. Gyakorló feladatok
09. Kép mozgatása
09. Gyakorló feladatok
10. Winmouse unit
10. Gyakorló feladatok
11. Dinamikus adatsze...
11. Gyakorló feladatok
12. Dinamikus adatsze...
12. Gyakorló feladatok
13. Dinamikus adatsze...
13. Gyakorló feladatok
|
Programozás 2 (Pascal)
12
Dinamikus adatszerkezetek - egyirányú rendezett lista
12.1 Egyirányú rendezett láncolt lista
A következő példában egy rendezett
egyirányú láncolt listát alakítunk
ki. A lista mindegyik eleme tartalmazza egy személy
nevét, születési évét és egy
mutatót a lista következő elemére. A listát
úgy alakítjuk ki, hogy az mindig rendezett legyen a nevek
szerint. Tehát az új elemet mindig a lista megfelelő
helyére szúrjuk be.
program Pelda33;
{ egyiranyu rendezett lancolt lista }
uses crt;
type PTElem = ^TElem; { a PTElem egy mutato,
ami TElem tipusra mutat }
TElem = record { TElem tipus definialasa }
nev: String;
szev: Integer;
kov: PTElem;
end;
var elso,akt,uj: PTElem;
i,x: integer;
begin
clrscr;
write('Mennyi elemet akarsz megadni? ');
readln(x);
{ elemek megadasa }
for i:=1 to x do
begin
writeln;
new(uj);
write(i:2,'. Nev: ');
readln(uj^.nev);
write(' Szuletesi ev: ');
readln(uj^.szev);
uj^.kov := nil;
if elso=nil then
elso := uj { elso elem }
else begin { mar van elso }
akt := elso;
if uj^.nev<akt^.nev then
begin { elsonel kisebb }
uj^.kov := elso;
elso := uj;
end
else
begin { ha elsonel nagyobb, megkeressuk a helyet }
while (akt^.kov<>nil) and
(akt^.kov^.nev<=uj^.nev) do
akt := akt^.kov;
{ majd a megfelelo helyre beszurjuk }
uj^.kov := akt^.kov;
akt^.kov := uj;
end;
end;
end;
writeln;
{ elemek kiirasa }
akt := elso;
while akt<>nil do
begin
writeln(akt^.nev:10,akt^.szev:5);
akt := akt^.kov;
end;
{ memoria felszabaditasa }
akt := elso;
while akt<>nil do
begin
elso := akt^.kov;
dispose(akt);
akt := elso;
end;
readkey;
end.
|