#include #include #include "stabla.h" /***************************** /**FUNKCIJE ZA RAD SA REDOM*** *****************************/ CVOR* napravi(DCVOR *d){ CVOR* novi = (CVOR*)malloc(sizeof(CVOR)); if(novi==NULL){ printf("Nije uspela alokacija.\n"); exit(EXIT_FAILURE); } novi->el = d; novi->sl = NULL; return novi; } void dodaj_cvor(CVOR **pl, DCVOR *d){ CVOR* novi = napravi(d); novi->sl = (*pl); (*pl) = novi; } void dodaj_na_kraj(CVOR **pl, DCVOR *d){ CVOR *temp; if((*pl)==NULL){ dodaj_cvor(pl,d); return; } //pomocni koji nam sluzi za iteraciju //da ne bi izgubili pocetak liste temp = (*pl); while(temp->sl!=NULL) temp=temp->sl; CVOR* novi = napravi(d); temp->sl = novi; novi->sl = NULL; } CVOR* obrisi(CVOR *pl){ if(pl==NULL) return NULL; pl->sl = obrisi(pl->sl); free(pl); pl = NULL; return pl; } void obrisi_pocetak(CVOR** poc){ CVOR *pom; pom = *poc; *poc = (*poc)->sl; free(pom); } /***************************** **FUNKCIJE ZA RAD SA DRVETOM** *****************************/ DCVOR* kreiraj_cvor(int v){ DCVOR *novi = malloc(sizeof(DCVOR)); if(novi==NULL) exit(EXIT_FAILURE); novi->v = v; novi->l = NULL; novi->d = NULL; return novi; } void ddodaj_cvor(DCVOR **koren, int v){ if(*koren==NULL){ *koren = kreiraj_cvor(v); }else{ if(v>(*koren)->v) ddodaj_cvor(&((*koren)->d),v); else ddodaj_cvor(&((*koren)->l),v); } } void dispisi(DCVOR *koren){ if(koren==NULL) return; dispisi(koren->l); printf("%d\n",koren->v); dispisi(koren->d); } DCVOR *dobrisi(DCVOR *koren){ if(koren==NULL) return NULL; koren->l = dobrisi(koren->l); koren->d = dobrisi(koren->d); free(koren); return NULL; } DCVOR *ucitaj_drvo_std(){ int v; DCVOR *koren = NULL; while(1){ scanf("%d",&v); if(v==0) break; ddodaj_cvor(&koren,v); } return koren; } int pronadji(DCVOR *koren, int v){ if(koren==NULL) return 0; if(koren->v==v) return 1; if(koren->v > v) return pronadji(koren->l,v); if(koren->v < v) return pronadji(koren->d,v); }