Professional Documents
Culture Documents
Linearne strukture
Polja
3.a) jednodimenzionalna (nizovi, vektori)
3.b) dvodimenzionalna (matrice)
višedimenzionalna (tenzori višeg reda)
6 Prazni dio
5 stoga
4 Pokazivač stoga
3
Popunjeni Sp=4
2
1
dio stoga
Izvedba stoga pomoću niza (2/4)
Stog je prazan ako je Sp = 0
Stog je pun ako je Sp = N
Stog se “puni” i “prazni” na “vrhu”. Podatak koji
je zadnji stavljen na stog, bit će prvi skinut sa stoga.
Sp = 0
Ako je Sp = N onda
Ispiši “Stack overflow. Aborting...”
Završi algoritam /* obavezan prekid programa! */
Sp = Sp + 1
VSp = x
Izvedba stoga pomoću niza (4/4)
Algoritam funkcije Pop( )
Ako je Sp = 0 onda
Ispiši “Illegal POP. Aborting...”
Završi algoritam /* obavezan prekid programa! */
x = VSp
Sp = Sp 1
Vratiti x
rješenje_postoji=FALSE
uk_tez=0, pred=0
Pozvati proceduru Torba
Ako rješenje_postoji onda
Za svaki i=1 do pred činiti
Ispisati TezinePop( )
U suprotnom
Ispisati “Nema rješenja”
Problem “putne torbe” (3/4)
Algoritam procedure Torba
Clear( )
Ponavljati
Ako je uk_tez=T onda rješenje_postoji = TRUE
U suprotnom
Ako je uk_tez<T i pred <n onda
pred = pred +1
uk_tez = uk_tez + Tezinepred
Push(pred)
U suprotnom
pred = Pop( )
uk_tez = uk_tez Tezinepred
Ako je pred<n onda
pred = pred +1
uk_tez = uk_tez + Tezinepred
Push(pred)
Sve dok nije rješenje_postoji i nije Is_empty( )
Problem “putne torbe” (4/4)
a a!
Dobro je poznato da je () =
b b! ( a− b )!
Ali, čim je a veličine preko 20, rezultat je 20znamenkast i
izlazi iz okvira SVIH cjelobronih tipova (čak i 64-bitnih)
n n−1 n−1 k 1 k
( ) ( )( ) () () ()
= +
m m−1 m
; =1, =1, =1
k k 0
Problem računanja ‘povrh’ (2/3)
Algoritam POVRH
s1.Clear( ), s2.Clear( )
s1.Push( a ), s2.Push( b )
povrh = 0
Ponavljati
n = s1.Pop( )
m = s2.Pop( )
Ako je m=n ili m=0 onda povrh = povrh +1
U suprotnom
s1.Push( n-1 )
s2.Push( m-1 )
s1.Push( n-1 )
s2.Push( m )
Sve dok nije s1.is_empty( )
Ispisati povrh
Problem računanja ‘povrh’ (3/3)
Algoritam koristi 2 stoga, ali može se lako
realizirati sa samo jednim stogom.
12 9 15 7 31 25 19
Vs>Vgg
7 9 15 12 31 25 19
Vdg>Vs
7 9 12 15 31 25 19
Problem sortiranja
QUICKSORT (3/5)
Algoritam QUICKSORT
Push( 1 ), Push( N )
Ponavljati Ključna funkcija za
gg = Pop( ) ispravan rad
dg = Pop( )
s = Nadji_s(dg,gg)
Ako je dg < s–1 onda
Push( dg )
Push( s–1 )
Ako je gg > s+1 onda
Push( s+1 )
Push( gg )
Sve dok nije Is_empty( )
Problem sortiranja
QUICKSORT (4/5)
Algoritam funkcije Nadji_s(dg,gg)
Ponavljati
s = dg
Sve dok je Vgg≥Vs i gg s činiti gg = gg – 1
Ako je gg = s onda vratiti s
Pozovi proceduru Zamjeni( Vs, Vgg )
s = gg
Sve dok je Vdg ≤ Vs i dg s činiti dg = dg + 1
Ako je dg = s onda vratiti s
Pozovi proceduru Zamjeni( Vs, Vdg )
Problem sortiranja
QUICKSORT (5/5)
Algoritam funkcije Nadji_s ima najviše gg – dg
ponavljanja.