Neovisnost o implementaciji
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Strukture podataka i algoritmi

#1: Neovisnost o implementaciji Autor/ica: markotronLokacija: Umag PostPostano: 19:55 sri, 11. 11. 2009
    —
Pozdrav,

Zanima me je li ovo dobro: dakle, zadatak je napisati funkciju BTREE novo( int n ) koja kreira stablo visine n takvo da svaki čvor ima samo desno dijete.
Rj:
Kod:

BTREE novo( int n ) {
    printf( "%d ", n );
    BTREE B;
    BTREE_MAKE_NULL( &B );
    if ( !n ) return B;
    return BTREE_CREATE( 'A', LAMBDA, novo( n-1 ), &B );
   
}


Točnije, zanima me smijem li ovako napisati:
Kod:

return BTREE_CREATE( 'A', LAMBDA, novo( n-1 ), &B );

jer funkcija CREATE vraća node, a ja onda taj node koristim kao BTREE.
Kvari li to neovisnost o implementaciji?

Hvala

#2:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 20:13 sri, 11. 11. 2009
    —
Nisam s kolegija, pa ne znam: vraca li BTREE_CREATE mozda upravo ovaj &B? Ako da, to je lokalna varijabla i "na van" ne smijes vratiti pointer na nju (jer ona automatski nestaje kad izadjes iz funkcije).

#3:  Autor/ica: markotronLokacija: Umag PostPostano: 20:38 sri, 11. 11. 2009
    —
Ne razumijem bas.
CREATE vraća korijen stabla B, što u stvari je to stablo.

Gornji program radi. Jedino što mene zanima je smijem li to tako napisati. Jer u stvari CREATE prima BTREE (na onom mjestu gdje piše novo(n-1)) ali CREATE vraća node. To su dvije iste stvari (različita imena za isto, u mojoj implementaciji). Samo što ja mislim da je to u svakoj implementaciji tako.

#4:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 20:47 sri, 11. 11. 2009
    —
Nisu bitni samo tipovi. To sto BTREE_CREATE() vraca, je l' alocirano u samoj funkciji ili kako se dodje do toga? Ne zanima me koju vrijednost ima, nego koja je to memorijska lokacija?
1. Dosla od nekog malloc(), calloc() i sl. u samoj funkciji,
2. Zapravo je to pointer koji BTREE_CREATE() dobije kao cetvrti parametar,
3. Pointer na nesto trece,
4. Nesto cetvrto (sto)?

#5:  Autor/ica: markotronLokacija: Umag PostPostano: 21:03 sri, 11. 11. 2009
    —
Odgovor je 1. Smile

#6:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 21:26 sri, 11. 11. 2009
    —
Onda smijes. Cool

Da pojasnim na sto sam ciljao gore... Ovo ne smijes napraviti:
Kod:
char *f(void) {
  char x[17], y[] = "Pero";
  return strcpy(x, y);
}

jer strcpy() vrati x, sto je pointer na memoriju koja se automatski oslobodi kad izadjes iz funkcije.

#7:  Autor/ica: markotronLokacija: Umag PostPostano: 21:45 sri, 11. 11. 2009
    —
Aha. Razumijem na što ste ciljali. Ali nažalost nije to bila moja nedoumica Smile

Moj je problem bio: imam funkciju koja prima podatak tipa BTREE, a ja pošaljem podatak tipa NODE. To radi zato što su u stvari BTREE i NODE jedna te ista stvar (samo se drugačije zovu). Sada, u zadatku piše da treba implementirati neovisno o implementaciji ATP BTREE. Možda postoji neka implementacija gdje BTREE i NODE nisu jedno te isto, pa moj program neće raditi. Ali sumnjam da takva implementacija postoji. Pa me zanima kako bi to trebalo napisat ako se ne može ovako kao što sam ja. Very Happy

#8:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 21:54 sri, 11. 11. 2009
    —
Pa, BTREE i node nisu jednaki, recimo, u implementaciji pomocu polja (poglavlje 3.2.2, preciznije strana 30 pri dnu, u skripti na stranici kolegija).

#9:  Autor/ica: markotronLokacija: Umag PostPostano: 22:13 sri, 11. 11. 2009
    —
Eh. Da. To sam tražio. Hvala Smile

#10:  Autor/ica: GinoLokacija: Pula PostPostano: 22:55 sri, 11. 11. 2009
    —
ma ja mislim da je to ok
ovo na 30 str je potpuno binarno stablo, i kod njega nema ni smisla radit ovu funkciju, jer rezultat nije potpuno binarno stablo

#11:  Autor/ica: pllook PostPostano: 13:33 ned, 1. 2. 2015
    —
Što točno znači da program mora biti neovisan o implementaciji nekog atp-a? Smijemo li onda koristiti funkcije sa službenog šalabahtera (BiCreate, BiMakeNull..)?

#12:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 14:16 ned, 1. 2. 2015
    —
pllook (napisa):
Što točno znači da program mora biti neovisan o implementaciji nekog atp-a? Smijemo li onda koristiti funkcije sa službenog šalabahtera (BiCreate, BiMakeNull..)?


Tocno to trebas koristiti. Ono sto ne smijes koristiti je kako su te funkcije zapravo implementirane (preko nizova, vezanih listi, etc), tako da program radi u neovisno o toj implementaciji.



Forum@DeGiorgi -> Strukture podataka i algoritmi


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Stranica 1 / 1.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin