bt_bb_section_bottom_section_coverage_image

Pravljenje reda

program pravljenjeReda;
type pok=^slog;
    slog=record
        vr:integer;
        sl:pok;
        end;
    red=record
        prvi,poslednji:pok;
        end;
        
procedure get(var r:red; var x:integer);
var p:pok;
begin
x:=r.prvi^.vr;
p:=r.prvi;
r.prvi:=r.prvi^.sl;
dispose(p);
if r.prvi=nil then
    r.poslednji:=nil;
end;

procedure put(var r:red;x:integer);
var p:pok;
begin
new(p);
p^.vr:=x;
p^.sl:=nil;
if r.prvi=nil then
    begin
    r.prvi:=p;
    r.poslednji:=p;
    exit;
    end;
r.poslednji^.sl:=p;
r.poslednji:=p;
end;

var r:red;
    i,x:integer;
begin
r.prvi:=nil;
r.poslednji:=nil;
for i:=1 to 10 do
    put(r,i);
for i:=1 to 10 do
    begin
    get(r,x);
    writeln(x);
    end;
end.
PUT

1. Deklaracija procedure

procedure put(var r: red; x: integer);
  • r: Struktura podataka tipa red, koja sadrži pokazivače na prvi i poslednji element reda. Prosleđuje se po referenci (var), jer se njen sadržaj menja.
  • x: Vrednost tipa integer koju želimo da dodamo u red.

2. Deklaracija pomoćne promenljive

var p: pok;
  • p: Privremena promenljiva tipa pokazivač na čvor (pok), koristi se za kreiranje novog elementa reda.

3. Kreiranje novog elementa

new(p);
p^.vr := x;
p^.sl := nil;
  • new(p) alocira memoriju za novi čvor.
  • p^.vr := x; postavlja vrednost novog čvora na x (broj koji dodajemo u red).
  • p^.sl := nil; postavlja pokazivač sledećeg elementa na nil, jer će ovaj element biti poslednji u redu.

4. Provera da li je red prazan

if r.prvi = nil then
begin
    r.prvi := p;
    r.poslednji := p;
    exit;
end
  • Ako je r.prvi = nil, red je prazan:
    • r.prvi := p;: Postavlja prvi element reda na novokreirani čvor.
    • r.poslednji := p;: Pošto postoji samo jedan element, poslednji pokazuje na isti čvor.
    • exit: Završava proceduru, jer je dodat prvi element u red.

5. Dodavanje na kraj reda

Ako red nije prazan:

r.poslednji^.sl := p;
r.poslednji := p;
  • r.poslednji^.sl := p;: Povezuje trenutni poslednji element reda (r.poslednji) sa novim čvorom p.
  • r.poslednji := p;: Ažurira pokazivač na poslednji element reda da pokazuje na novi čvor.

image

GET

1. Deklaracija procedure

procedure get(var r: red; var x: integer);
  • r: Struktura reda koja sadrži pokazivače na prvi i poslednji element. Prosleđuje se po referenci (var), jer se njen sadržaj menja.
  • x: Promenljiva u koju se smešta vrednost uklonjenog elementa.

2. Deklaracija pomoćne promenljive

var p: pok;
  • p: Privremena promenljiva tipa pokazivač na čvor (pok), koristi se za privremeno skladištenje pokazivača na čvor koji treba ukloniti.

3. Preuzimanje vrednosti iz prvog čvora

x := r.prvi^.vr;
  • r.prvi^.vr preuzima vrednost iz čvora na početku reda i smešta je u promenljivu x.

4. Pamćenje i ažuriranje pokazivača na prvi element

p := r.prvi;
r.prvi := r.prvi^.sl;
  • p := r.prvi;: Privremena promenljiva p postavlja se na trenutni prvi čvor reda.
  • r.prvi := r.prvi^.sl;: Pokazivač na prvi element reda ažurira se da pokazuje na sledeći čvor u redu.

5. Oslobađanje memorije uklonjenog elementa

dispose(p);
  • Oslobađa memoriju zauzetu čvorom koji više nije deo reda.

6. Provera da li je red prazan

if r.prvi = nil then
    r.poslednji := nil;
  • Ako je r.prvi nil, to znači da je red sada prazan.
  • U tom slučaju, postavlja se i r.poslednji na nil, jer nema više elemenata u redu.

image

Komentariši