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 tipared
, 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 tipainteger
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 nax
(broj koji dodajemo u red).p^.sl := nil;
postavlja pokazivač sledećeg elementa nanil
, 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 čvoromp
.r.poslednji := p;
: Ažurira pokazivač na poslednji element reda da pokazuje na novi čvor.
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 promenljivux
.
4. Pamćenje i ažuriranje pokazivača na prvi element
p := r.prvi;
r.prvi := r.prvi^.sl;
p := r.prvi;
: Privremena promenljivap
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
nanil
, jer nema više elemenata u redu.