#include #include #include "liste.h" EL* novi(int br){ EL* el = (EL*)malloc(sizeof(EL)); if(el==NULL){ printf("Greska pri alokaciji elementa.\n"); exit(EXIT_FAILURE); } (*el).br = br; (*el).sl = NULL; return el; } /* pocetak liste se moze (i hoce) promeniti prilikom dodavanja novog elementa, zato vracamo EL*, odnosno novi pocetak */ EL* dodaj(EL *pl, int br){ EL* el = novi(br); EL *tmp; if(pl==NULL){ //ako je lista prazna, njen pocetak je //jednak poziciji novog elementa return el; }else{ //inace, mora da ide ono premoscavanje pokazivaca (*el).sl = pl; return el; } } EL* dodaj_na_kraj(EL* pl, int br){ EL* n = novi(br); EL* tmp = pl; if(pl==NULL) return n; // 1->4->6->NULL while(tmp->sl!=NULL) tmp = tmp->sl; tmp->sl=n; return pl; } void ispisi(EL *pl){ EL* tmp = pl; while(tmp!=NULL){ //ispisujemo vrednost printf("%d\n", (*tmp).br); //prelazimo na sledeci element tmp = (*tmp).sl; } } EL* obrisi_it(EL* pl){ EL* tmp; while(pl!=NULL){ /* pl->sl je ekvivalentno (*pl).sl */ tmp = pl->sl; free(pl); pl = tmp; } return NULL; } EL* obrisi_rek(EL* pl){ if(pl==NULL) return NULL; pl->sl = obrisi_rek(pl->sl); free(pl); pl = NULL; return pl; } EL* ucitaj(){ EL *pl=NULL; int n; while(1){ scanf("%d", &n); if(n==0) break; pl = dodaj(pl, n); } return pl; }