Strukture podataka i algoritmi 1. kolokvij Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter. Predajete samo papire koje ste dobili. Rezultati i uvid u kolokvije: ponedjeljak, 26. studenog u 9h. Zadatak 1 1 (6 bodova) Napišite (rekurzivnu) funkciju void PushBottom(elementtype x, STACK* S); koja će vrijednost x ubaciti na dno stoga *S. Ne smijete koristiti pomoćna polja i dodatne strukture podataka. Rješenje treba biti neovisno o implementaciji atp STACK.
2 Strukture podataka i algoritmi 1. kolokvij Zadatak 2 (4 boda) Pretpostavimo da skupovne operacije imaju prioritet redom:,, \ (od najvećeg prioriteta prema najmanjem). Izraz A B \ (D C A) \ (A D) B Dijkstrinim algoritmom prebacite u Postfix oblik; prikažite stanje stoga u svakom koraku algoritma. Za vrijednosti A = {1, 2, 3}, B = {3, 4, 6}, C = {3, 7, 8}, D = {1, 6}, algoritamski izvedite izvrednjavanje dobivenog Postfix izraza pomoću stoga.
3 Strukture podataka i algoritmi 1. kolokvij Zadatak 3 (4 boda) Nizom poziva operacije MERGE spajamo 6 sortiranih lista sa ω 1, 7, 10, 4, 16, 5 elemenata u jednu veliku sortiranu listu. Odredite ω 1 ako je poznato da je minimalan broj operacija potreban za spajanje svih ovih lista jednak 133. Obavezno napišite postupak kojim ste dobili ω 1!
4 Strukture podataka i algoritmi 1. kolokvij Zadatak 4 (2 + 4 boda) (a) Napišite funkciju BTREE jedno(int n) koja kreira i vraća novo binarno stablo koje ima n čvorova s jednim djetetom. Svi čvorovi stabla neka imaju oznaku 1; raspored čvorova možete odabrati sami. (b) Kažemo da je binarno stablo uredeno ako za svaki čvor koji ima dvoje djece vrijedi da je oznaka njegovog lijevog djeteta manja ili jednaka od oznake njegovog desnog djeteta. Napišite funkciju void uredi(btree *T) koja binarno stablo T pretvara u uredeno, ali tako da svaki čvor prije i nakon uredivanja ima istog roditelja. Na primjer, ako je na ulazu u funkciju stablo bilo kao na slici lijevo, onda funkcija uredi može vratiti stablo sa slike desno: 2 2 / \ / \ 3 1 1 3 T_prije = / / \ -----> T_poslije = / \ / 4 2 5 2 5 4 / \ \ \ / \ 5 2 1 1 2 5 / / 6 6 U oba podzadatka pretpostavite da su oznake čvorova tipa int. Funkcije trebaju biti neovisne o implementaciji atp BTREE; smijete definirati i dodatne pomoćne funkcije i pomoćne atp-ove tipa BTREE. Nije dozvoljeno korištenje funkcija LEFT_SUBTREE i RIGHT_SUBTREE.
5 Strukture podataka i algoritmi 1. kolokvij Zadatak 5 (5 bodova) Opišite riječima implementaciju preslikavanja pomoću zatvorene hash tablice. Koje su prednosti i mane te implementacije? U što se pretvorio tip MAPPING iz apstraktnog tipa podataka? Kolika je vremenska složenost operacije COMPUTE()? Nacrtajte dijagram odgovarajuće strukture podataka za preslikavanje: d M(d) 4 2.15 6 1.12 9 7.33 14 9.21 20 3.75 27 8.54
Strukture podataka i algoritmi 1. kolokvij Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i službeni šalabahter. Predajete samo papire koje ste dobili. Rezultati i uvid u kolokvije: ponedjeljak, 26. studenog u 9h. Zadatak 1 1 (6 bodova) Napišite (rekurzivnu) funkciju void Invert(QUEUE* Q); koja će invertirati red *Q. Ne smijete koristiti pomoćna polja i dodatne strukture podataka. Rješenje treba biti neovisno o implementaciji atp QUEUE.
2 Strukture podataka i algoritmi 1. kolokvij Zadatak 2 (4 boda) Pretpostavimo da skupovne operacije imaju prioritet redom:,, \ (od najvećeg prioriteta prema najmanjem). Izraz A B (C \A\D B) D C Dijkstrinim algoritmom prebacite u Postfix oblik; prikažite stanje stoga u svakom koraku algoritma. Za vrijednosti A = {1, 3}, B = {3, 4}, C = {1, 3, 5, 7}, D = {2, 5}, algoritamski izvedite izvrednjavanje dobivenog Postfix izraza pomoću stoga.
3 Strukture podataka i algoritmi 1. kolokvij Zadatak 3 (4 boda) Nizom poziva operacije MERGE spajamo 6 sortiranih lista sa ω 1, 10, 8, 3, 15, 5 elemenata u jednu veliku sortiranu listu. Odredite ω 1 ako je poznato da je minimalan broj operacija potreban za spajanje svih ovih lista jednak 128. Obavezno napišite postupak kojim ste dobili ω 1!
4 Strukture podataka i algoritmi 1. kolokvij Zadatak 4 (2 + 4 boda) (a) Napišite funkciju BTREE dva(int n) koja kreira i vraća novo binarno stablo koje ima n čvorova s dvoje djece. Svi čvorovi stabla neka imaju oznaku A; raspored čvorova možete odabrati sami. (b) Kažemo da je binarno stablo lijepo ako za svaki čvor koji ima dvoje djece vrijedi da je oznaka njegovog lijevog djeteta veća ili jednaka od oznake njegovog desnog djeteta. Napišite funkciju void uljepsaj(btree *T) koja binarno stablo T pretvara u lijepo, ali tako da svaki čvor prije i nakon uljepšavanja ima istog roditelja. Na primjer, ako je na ulazu u funkciju stablo bilo kao na slici lijevo, onda funkcija uljepsaj može vratiti stablo sa slike desno: B B / \ / \ L Z Z L T_prije = / \ / \ -----> T_poslije = / \ / \ F X Q P Q P X F \ / / \ W T T W / \ / \ D K K D U oba podzadatka pretpostavite da su oznake čvorova tipa char. Funkcije trebaju biti neovisne o implementaciji atp BTREE; smijete definirati i dodatne pomoćne funkcije i pomoćne atp-ove tipa BTREE. Nije dozvoljeno korištenje funkcija LEFT_SUBTREE i RIGHT_SUBTREE.
5 Strukture podataka i algoritmi 1. kolokvij Zadatak 5 (5 bodova) Opišite riječima implementaciju preslikavanja pomoću binarnog stabla traženja. Koje su prednosti i mane te implementacije? U što se pretvorio tip MAPPING iz apstraktnog tipa podataka? Kolika je vremenska složenost operacije COMPUTE()? Nacrtajte dijagram odgovarajuće strukture podataka za preslikavanje zadano tablicom: d M(d) 4 2.15 6 1.12 9 7.33 14 9.21 20 3.75 27 8.54