#include #include #include typedef struct osoba { int god; char ime[30]; struct osoba *sled; } Osoba; Osoba* kreiraj_osobu(char ime[], int god); void ubacinapocetak(Osoba **lista,char ime[],int god); void ispisi(Osoba* lista,FILE*f); void izbrisi(Osoba**lista); void unazad_rekurzivno(Osoba *lista); void unapred_rekurzivno(Osoba *lista); void dodaj(Osoba **lista, int god, char ime[]); main() { Osoba *lista=NULL; ubacinapocetak(&lista,"Milica",22); ubacinapocetak(&lista,"Marko",27); ubacinapocetak(&lista,"Milena",50); ispisi(lista, stdout); unazad_rekurzivno(lista); unapred_rekurzivno(lista); dodaj(&lista,16,"Nada"); ispisi(lista, stdout); /* izbrisi(&lista); ispisi(lista, stdout);*/ while(1); } Osoba* kreiraj_osobu(char ime[],int god) { Osoba *p; p=(Osoba*)malloc(sizeof(Osoba)); p->god=god; strcpy(p->ime,ime); return p; } void ubacinapocetak(Osoba**lista,char ime[],int god) { Osoba *pom; pom=kreiraj_osobu(ime,god); pom->sled=*lista; *lista=pom; } void ispisi(Osoba *lista, FILE*f) { if(lista == NULL) fprintf(f, "Lista je prazna\n"); while(lista) { fprintf(f,"Osoba ima %d god. i zove se %s\n",lista->god, lista->ime); /* fputs(lista->ime,f); */ lista=lista->sled; } } void izbrisi(Osoba**lista) { Osoba *stari; while(*lista){ stari=*lista; *lista=(*lista)->sled; free(stari);} } void unazad_rekurzivno(Osoba *lista) { if(lista!=NULL) { unazad_rekurzivno(lista->sled); printf("Osoba ima %d god. i zove se %s\n",lista->god, lista->ime); } } void unapred_rekurzivno(Osoba *lista) { if(lista!=NULL) { printf("Osoba ima %d god. i zove se %s\n",lista->god, lista->ime); unapred_rekurzivno(lista->sled); } } void dodaj(Osoba **lista, int god, char ime[]) { Osoba *pr, *tr, *novi=(Osoba*)malloc(sizeof(Osoba)); novi=kreiraj_osobu(ime,god); if(novi->god<(*lista)->god) { novi->sled=*lista; *lista=novi; } else { for(pr=NULL,tr=*lista;(tr->sled)!=NULL,novi->godgod; pr=pr->sled,tr=tr->sled); pr->sled=novi; novi->sled=tr; } }