[ milos_r @ 22.01.2009. 23:32 ] @
Imam jedan neobican problem vezan za funkciju za trazenje minimalne vrednosti u drvetu. Funkcija radi ali nikako nemogu da joj ubacim neki uslov za prazno drvo tj. cim ubacim bilo kako return 0; funkcija mi nadalje uvek vraca 0. Evo i koda: Code: #include <stdlib.h> #include <stdio.h> struct cvor{ int broj; struct cvor *l, *d; }; void ubaci_u_drvo(struct cvor **pdrvo, int b){ if (*pdrvo == NULL){ struct cvor *novi; if ((novi = (cvor*)malloc(sizeof(cvor))) == NULL){ fprintf(stderr, "Greska prilikom alokacije memorije");exit(1);} novi->broj = b; novi->l = NULL; novi->d = NULL; *pdrvo = novi;} else{ if (b < (*pdrvo)->broj) ubaci_u_drvo(&((*pdrvo)->l), b); else ubaci_u_drvo(&((*pdrvo)->d), b); } } int pronadji(struct cvor *drvo){ int vrati, l, d,; if (drvo != NULL){ l = pronadji(drvo->l); d = pronadji(drvo->d); if (l < d ){ if(l < drvo->broj) vrati=l; else vrati=drvo->broj; } else{ if(d < drvo->broj) vrati=d; else vrati=drvo->broj; } } return vrati; } void ispisi_drvo(struct cvor *drvo){ if (drvo != NULL){ ispisi_drvo(drvo->l); printf("%d ", drvo->broj); ispisi_drvo(drvo->d); } } void obrisi_drvo(struct cvor *drvo){ if (drvo != NULL){ obrisi_drvo(drvo->l); obrisi_drvo(drvo->d); free(drvo); } } int main(){ struct cvor *drvo = NULL; int i; int max=1,min=0; while(1){ printf("ubacujte brojeve u drvo za izlaz unesite 0: "); scanf("%d",&i); if(i==0) break; ubaci_u_drvo(&drvo,i);} ispisi_drvo(drvo); putchar('\n'); printf("najmanji cvor u drvetu je: %d\n",pronadji(drvo)); obrisi_drvo(drvo); } Znaci ovako napisana funkcija radi ali nema dobru povratnu vrednost u slucaju da je drvo prazno, a kad ubacim jedan "else return 0;" uvek mi vraca 0. Probao sam i da pocnem funkciju sa if(drvo==NULL) return 0; pa else ovo sve ostalo i opet ista stvar. Ovo se inace ne desava za funkciju koja trazi maksimum koja je skoro identicnog koda samo su joj vrednosti u ovim if-ovima zamenjene. Ako neko ima ideju bio bih mu zahvalan Milos |