bt_bb_section_bottom_section_coverage_image

Program za kreiranje liste

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 vrednost n u podatak novog čvora.
  • p^.sledeci := NIL: Postavlja pokazivač na sledeći element na NIL, 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 (gde pom^.sledeci postaje NIL).

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: Pomera pom na novokreirani element.
  • pom^.podatak := n: Dodeljuje vrednost n u podatak novog elementa.
  • pom^.sledeci := NIL: Postavlja pokazivač na sledeći element na NIL, 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).

image

Komentariši