Witam. Chciałem tylko zapytać czy kod, który napisałem będzie działał. Chodzi mi tylko o to, czy dobrze zrozumiałem temat list.
Listy jednokierunkowe
1. Wstawianie elementu na początek listy.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
end;
procedure dodaj_na_poczatek(var wsk : Lista, x : integer);
var
nowy : Lista;
begin
new(nowy);
if(wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
wsk := nowy;
end
else
begin
nowy^.liczba := x;
nowy^.nast := wsk;
wsk := nowy;
end;
end;
2. Wstawianie elementu na koniec listy.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
end;
procedure dodaj_na_koniec(var wsk : Lista, x : integer);
var
nowy, pom : Lista;
begin
new(nowy);
if (wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
wsk := nowy;
end
else
begin
pom := wsk;
while (pom^.nast != nil) do
pom := pom^.nast;
nowy^.liczba := x;
nowy^.nast := nil;
pom^.nast := nowy;
end;
end;
3. Wstawianie elementu do listy z sortowaniem rosnąco.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
end;
procedure dodaj_sort_rosnoca(var wsk : Lista, x : integer);
var
nowy, pom : Lista;
begin
new(nowy)
if (wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
wsk := nowy;
end
else
begin
pom := wsk;
if (pom^.liczba > x) then
begin
nowy^.liczba := x;
nowy^.nast := pom;
pom := nowy;
end
else
begin
while (pom^.nast != nil) and (pom^.nast^.liczba < x) then
pom := pom^.nast;
if (pom^.nast = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
pom^.nast := nowy;
end
else
begin
nowy^.liczba := x;
nowy^.nast := pom;
end;
end;
end;
Listy dwukierunkowe
1. Wstawianie elementu na początek listy.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
pop : Lista;
end;
procedure dodaj_na_poczatek(var wsk : Lista, x : integer);
var
nowy : Lista;
begin
new(nowy);
if (wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
nowy^.pop := nil;
wsk := nowy;
end
else
begin
nowy^.liczba := x;
nowy^.nast := wsk;
nowy^.pop := nil;
wsk^.pop := nowy;
wsk := nowy;
end;
end;
2. Wstawianie elementu na koniec listy.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
pop : Lista;
end;
procedure dodaj_na_koniec(var wsk : Lista, x : integer);
var
nowy, pom : Lista;
begin
new(nowy);
if (wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
nowy^.pop := nil;
wsk := nowy;
end
else
begin
pom := wsk;
while (pom^.nast != nil) then
pom := pom^.nast;
nowy^.liczba = x;
nowy^.nast := nil;
nowy^.pop := pom;
pom := nowy;
end;
end;
3. Wstawianie elementu do listy z sortowaniem rosnąco.
type
Lista = ^element;
element = record
liczba : integer;
nast : Lista;
pop : Lista;
end;
procedure dodaj_sort_rosnoco(var wsk : Lista, x : integer);
var
nowy, pom, pom2 : Lista;
begin
new(nowy)
if (wsk = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
nowy^.pop := nil;
wsk := nowy;
end
else
begin
pom := wsk;
if (pom^.liczba > x) then
begin
nowy^.liczba := x;
nowy^.nast := pom;
nowy^.pop := nil;
pom^.pop := nowy;
pom := nowy;
end
else
begin
while (pom^.nast != nil) and (pom^.nast^.liczba < x) then
pom := pom^.nast;
if (pom^.nast = nil) then
begin
nowy^.liczba := x;
nowy^.nast := nil;
nowy^.pop := pom;
pom^.nast := nowy;
end
else
begin
pom2 := pom^.pop;
nowy^.liczba := x;
nowy^.nast := pom;
nowy^.pop := pom2;
pom^.pop := nowy;
end;
end;
end;