Ljudi dobio sam zadatak bez cijeg rjesenja ne mogu na ispit.A ne znam ga uraditi.On glasi ovako:
"Oblikovati memorijski rezidentno dvostruko binarno stablo( binarno stablo sortirano pomocu 2 kljuca) s podacima o osobi. Kljucevi za sortiranje binarnog stabla su JMBG i prezime."
Eto...ako se neko sjeti uraditi...nek posalje na mail ili postavi...jer ja ovo ne mogu "maknuti"
NAPOMENA: ovo treba rijesiti u C-u
'AJMO "C"-PEOPLE,DA VAS VIDIM
Moderator: Benq
-
visocicaguy
- Posts: 1258
- Joined: 27/10/2002 00:00
- Contact:
#3
hm... za rjesavanje nemam vremena.. ali evo prijedlog kako bi to mogo uraditi..
prva stvar: napravis listu, ciji ce pointer prvog sloga sadrzavati dva pointera na dva niza sloga (lijevi i desni).
druga stvar: ako imas dva kljuca sortiranja, moras definisati prioritet kljuceva, da ne bi doslo do sukoba. to znaci, moras odluciti koji ce ti od ta dva kljuca biti "jacci", odnosno primarni i sekundarni kljuc. time izbjegavas slucaj da naprimjer neki novi korisnik koji je unesen po JMBG pri silasku niz stablo treba ici na lijevi cvor, a po prezimenu na desni.... onda program ne zna sta treba uraditi... i to je pad programa.
treca stvar: pri unosu u drvo ces poceti od glave (vrha stabla). uzmimo da ti je prvi kljuc prezime, a drugi JMBG. u prvom prolazu ce ti se tip )kakav god da je.... evo uzmimo za primjer da se preziva Berulovic i ima JMBG 952xxxxxxx2. on ce ti se postaviti kao vrh stabla. neka je sljedeca osoba Antimunovic sa JMBG 967xxxxxxx4. Poredit ces novi slog sa postojecim, i posto je primarni kljuc prezime, on ce skontati da je "A" < "B" i poctavit ce novi slog na lijevu stranu kao dijete postojeceg sloga (Berulovica). Da je bio JMBG primarni kljuc postavio bi ga desno, posto je JMBG drugog "veci" od JMBG-a prvog covjeka. tako ces kreirati stablo, pri cemu ce se uvijek naci mjesto odgovarajuce za novounesenog covjeka. neka te ne iritira sto je slovo "B" na vrhu stabla, jer pri pretrazivanju ces primjeniti slican algoritam... npr. Ti trazis Antimunovica.. poredit ces prvo slovo prvog prezimena sa prvim slovom prezimena u vrhu drveta, skontati da je "A" < "B" i ici lijevo.... onda ces ga naci... tako se to moze provuci kroz cijelo stablo. U Slucaju da treba dodati jos nekog "Antimunovica", trebas postaviti slucaj, da ako su ista prezimena (naravno, moras porediti sva slova od tezinskog faktora slijeva...pa tek ako su sva slova ista, isto je i prezime), onda se na osnovu drugog kljuca (istim fazonom) poredi gdje treba ici novi covjek... ako su identicni prezime i JMBG naravno da ces onemoguciti taj slucaj jer nema smisla.... eto ja mislim da sam ti barem dao neku ideju kako bi mogao rijesiti taj problem.
sretno,
visocicaguy
visit: http://www.smajevic.co.ba/amir
prva stvar: napravis listu, ciji ce pointer prvog sloga sadrzavati dva pointera na dva niza sloga (lijevi i desni).
druga stvar: ako imas dva kljuca sortiranja, moras definisati prioritet kljuceva, da ne bi doslo do sukoba. to znaci, moras odluciti koji ce ti od ta dva kljuca biti "jacci", odnosno primarni i sekundarni kljuc. time izbjegavas slucaj da naprimjer neki novi korisnik koji je unesen po JMBG pri silasku niz stablo treba ici na lijevi cvor, a po prezimenu na desni.... onda program ne zna sta treba uraditi... i to je pad programa.
treca stvar: pri unosu u drvo ces poceti od glave (vrha stabla). uzmimo da ti je prvi kljuc prezime, a drugi JMBG. u prvom prolazu ce ti se tip )kakav god da je.... evo uzmimo za primjer da se preziva Berulovic i ima JMBG 952xxxxxxx2. on ce ti se postaviti kao vrh stabla. neka je sljedeca osoba Antimunovic sa JMBG 967xxxxxxx4. Poredit ces novi slog sa postojecim, i posto je primarni kljuc prezime, on ce skontati da je "A" < "B" i poctavit ce novi slog na lijevu stranu kao dijete postojeceg sloga (Berulovica). Da je bio JMBG primarni kljuc postavio bi ga desno, posto je JMBG drugog "veci" od JMBG-a prvog covjeka. tako ces kreirati stablo, pri cemu ce se uvijek naci mjesto odgovarajuce za novounesenog covjeka. neka te ne iritira sto je slovo "B" na vrhu stabla, jer pri pretrazivanju ces primjeniti slican algoritam... npr. Ti trazis Antimunovica.. poredit ces prvo slovo prvog prezimena sa prvim slovom prezimena u vrhu drveta, skontati da je "A" < "B" i ici lijevo.... onda ces ga naci... tako se to moze provuci kroz cijelo stablo. U Slucaju da treba dodati jos nekog "Antimunovica", trebas postaviti slucaj, da ako su ista prezimena (naravno, moras porediti sva slova od tezinskog faktora slijeva...pa tek ako su sva slova ista, isto je i prezime), onda se na osnovu drugog kljuca (istim fazonom) poredi gdje treba ici novi covjek... ako su identicni prezime i JMBG naravno da ces onemoguciti taj slucaj jer nema smisla.... eto ja mislim da sam ti barem dao neku ideju kako bi mogao rijesiti taj problem.
sretno,
visocicaguy
visit: http://www.smajevic.co.ba/amir
-
neko iz mase
- Posts: 2018
- Joined: 29/12/2004 21:18
#6
ako zelis da se malo i dokazes, dobra ideja bi ti bila da upotrijebis balansiranje stabla sa npr AVL algoritmom
http://ciips.ee.uwa.edu.au/~morris/Year ... 0/AVL.html
samo mali prijedlog za poboljsanje performansi programa
http://ciips.ee.uwa.edu.au/~morris/Year ... 0/AVL.html
samo mali prijedlog za poboljsanje performansi programa
