#ifndef __SKUPOVI_H__ #define __SKUPOVI_H__ 1 #include #include typedef struct cvor { int vrednost; struct cvor *levi, *desni; } Skup; /* Pomocna funkcija za kreiranje cvora. Cvor se kreira dinamicki, funkcijom malloc(). U slucaju greske program se prekida i ispisuje se poruka o gresci. U slucaju uspeha inicijalizuje se vrednost datim brojem, a pokazivaci na podstabla se inicijalizuju na NULL. Funkcija vraca adresu novokreiranog cvora */ Skup *napravi_cvor(int x); /* Funkcija dodaje novi cvor u stablo sa datim korenom. Ukoliko broj vec postoji u stablu, ne radi nista. Cvor se kreira funkcijom napravi_cvor(). Funkcija vraca koren stabla nakon ubacivanja novog cvora. */ Skup *dodaj_u_stablo(Skup * s, int x); /* Funkcija pretrazuje binarno stablo. Ukoliko pronadje cvor sa vrednoscu koja je jednaka datom broju, vraca adresu tog cvora. U suprotnom vraca NULL */ Skup *pretrazi_stablo(Skup * s, int x); /* Funkcija vraca adresu cvora sa najmanjom vrednoscu u stablu, ili NULL ako je stablo prazno */ Skup *pronadji_najmanji(Skup * s); /* Funkcija brise cvor sa datom vrednoscu iz stabla, ukoliko postoji. U suprotnom ne radi nista. Funkcija vraca koren stabla (koji moze biti promenjen nakon brisanja) */ Skup *obrisi_element(Skup * s, int x); /* Funkcija prikazuje stablo s leva u desno (tj. prikazuje elemente u rastucem poretku) */ void prikazi_stablo(Skup * s); /* Funkcija oslobadja prostor koji je alociran za cvorove stabla. Funkcija vraca NULL, zato sto je nakon oslobadjanja stablo prazno. */ Skup *oslobodi_stablo(Skup * s); /* Funkcija kreira novo stablo identicno stablu koje je dato korenom. Funkcija vraca pokazivac na koren novog stabla. */ Skup *kopiraj_stablo(Skup * s); /* Funkcija modifikuje stablo dato korenom koren_1 tako da sadrzi i sve elemente drugog stabla datog korenom koren_2 (drugim recima funkcija kreira uniju dva stabla, i rezultat se smesta u prvo stablo). Funkcija vraca pokazivac na koren tako modifikovanog prvog stabla. */ Skup *kreiraj_uniju(Skup * s1, Skup * s2); /* Funkcija modifikuje stablo dato korenom koren_1 tako da sadrzi samo one elemente koji su i elementi stabla datog korenom koren_2 (drugim recima funkcija kreira presek dva stabla, i rezultat se smesta u prvo stablo). Funkcija vraca pokazivac na koren tako modifikovanog prvog stabla. */ Skup *kreiraj_presek(Skup * s1, Skup * s2); /* Funkcija modifikuje stablo dato korenom koren_1 tako da sadrzi samo one elemente koji nisu i elementi stabla datog korenom koren_2 (drugim recima funkcija kreira razliku dva stabla, i rezultat se smesta u prvo stablo). Funkcija vraca pokazivac na koren tako modifikovanog prvog stabla. */ Skup *kreiraj_razliku(Skup * s1, Skup * s2); /* Funkcija vraca broj elemenata u stablu sa datim korenom */ int broj_elemenata(Skup * s); /* Funkcija proverava da li je prvi skup, podskup drugog skupa */ int podskup(Skup * s1, Skup * s2); #endif