program Kreiranje type pokelement= ^element; element=record podatak:integer; sledeci:pokelement; end; function dodaj(p:pokelement; n:integer):pokelement; var pom:pokelement; begin if p=NIL then begin new(p); p^.podatak := n; p^.sledeci := NIL; end else begin pom := p; while pom^.sledeci <> NIL do pom := pom^.sledeci; new(pom^.sledeci); pom := pom^.sledeci; pom^.podatak := n; pom^.sledeci := NIL; end; dodaj:=p; end; procedure stampaj_listu( p:pokelement ); var pom:pokelement; begin pom := p; if p <> NIL then begin repeat write(pom^.podatak,' '); pom:=pom^.sledeci; until pom = NIL; writeln; end else writeln('Lista je prazna.'); writeln; end; var n,i,x:integer; glava:pokelement; begin glava := NIL; writeln('Unesi broj elemenata u listi:'); readln(n); for i:=1 to n do begin writeln('Unesi ',i,'. element:'); readln(x); glava := dodaj(glava, x); end; writeln('Kreirana lista je:'); stampaj_listu( glava ); end.
Kako funkcioniše
1. Provera da li je lista prazna
if p = NIL then
- Ako je
p
(pokazivač na prvi element liste)NIL
, to znači da je lista prazna, pa se pravi prvi element liste.
2. Kreiranje prvog elementa liste (ako je prazna)
begin
new(p);
p^.podatak := n;
p^.sledeci := NIL;
end;
new(p)
: Kreira novi čvor u memoriji.p^.podatak := n
: Dodeljuje vrednostn
u podatak novog čvora.p^.sledeci := NIL
: Postavlja pokazivač na sledeći element naNIL
, jer je to poslednji element u listi (trenutno samo jedan).
3. Dodavanje elementa na kraj liste (ako lista nije prazna)
else
begin
pom := p;
while pom^.sledeci <> NIL do
pom := pom^.sledeci;
- Ako lista nije prazna, postavlja se
pom
na prvi element liste (p
). - Zatim se koristi petlja
while
koja ide kroz listu sve dok ne dođe do poslednjeg elementa (gdepom^.sledeci
postajeNIL
).
4. Kreiranje novog elementa i dodavanje na kraj
new(pom^.sledeci);
pom := pom^.sledeci;
pom^.podatak := n;
pom^.sledeci := NIL
new(pom^.sledeci)
: Kreira novi čvor nakon trenutnog poslednjeg elementa (pom
).pom := pom^.sledeci
: Pomerapom
na novokreirani element.pom^.podatak := n
: Dodeljuje vrednostn
u podatak novog elementa.pom^.sledeci := NIL
: Postavlja pokazivač na sledeći element naNIL
, jer je ovo poslednji element u listi.
5. Vraćanje početnog pokazivača
dodaj := p;
- Funkcija vraća početni pokazivač
p
na prvi element liste, jer lista ostaje ista (samo je dodat novi element na kraj).