#include #include typedef struct _cvor cvor; struct _cvor { int broj; cvor *sled; }; /*Rekurzivna void funkcija za ubacivanje elementa na kraj liste */ void ubacinakraj(int a, cvor **poc) { /*Ukoliko smo na kraju liste potreno je dodati novi cvor*/ if (*poc==NULL) { /*Oslobadja se prostor za novi cvor */ cvor *novi=(cvor*)malloc(sizeof(cvor)); /*Novi dobija vrednost za svoje clanove */ novi->broj=a; novi->sled=NULL; /* *poc pokazuje na novog, poc je bio pokazivac poslednjeg elementa u listi tako da je novi sada poslednji element liste */ *poc=novi; } /*Ukoliko poc nije NULL rekurzivno nastavljamo sa sledecim elementom liste*/ else ubacinakraj(a,&((*poc)->sled)); } /* Ubacivanje novog elementa u vec sortiranu listu */ void ubacisortirano(int a, cvor **poc) { /* Ako je poc NULL onda nema vise elemenata */ if (*poc==NULL) { cvor *novi=(cvor*)malloc(sizeof(cvor)); novi->broj=a; novi->sled=NULL; *poc=novi; } else /* Ukoliko je a manje od broja koji je na redu u listi - tu je mesto za a */ if ((*poc)->broj>a) { /*Oslobadja se memorija za novi cvor */ cvor *novi=(cvor*)malloc(sizeof(cvor)); /* U novi cvor se prepisuju podaci elementa koji treba da sledi iza a */ novi->broj=(*poc)->broj; novi->sled=(*poc)->sled; /* a se postavlja na mesto na kojem je bio prvi element veci od a*/ (*poc)->broj=a; (*poc)->sled=novi; } else /*Inace se rekurzivno trazi mesto za a */ ubacisortirano(a,&((*poc)->sled)); } void ubacinapoc(int a, cvor **poc) { cvor *novi=(cvor*)malloc(sizeof(cvor)); novi->broj=a; novi->sled=*poc; *poc=novi; } void ispisi(cvor *poc) { if (poc!=NULL) { printf("%d\t",poc->broj); ispisi(poc->sled); } } int main() { cvor * pocetak=NULL, *pocetak1=NULL; ubacinakraj(1,&pocetak); ubacinakraj(2,&pocetak); ubacinakraj(1,&pocetak); ubacinakraj(7,&pocetak); ispisi(pocetak); /* ubacisortirano(1,&pocetak1); ubacisortirano(7,&pocetak1); ubacisortirano(4,&pocetak1); ubacisortirano(3,&pocetak1); ubacisortirano(0,&pocetak1); ubacisortirano(9,&pocetak1); ispisi(pocetak1) */ return 0; }