#include #include #include "liste.h" CVOR* napravi(int v){ CVOR* novi = (CVOR*)malloc(sizeof(CVOR)); if(novi==NULL){ printf("Nije uspela alokacija.\n"); exit(EXIT_FAILURE); } novi->v = v; novi->sl = NULL; return novi; } void dodaj_cvor(CVOR **pl, int v){ CVOR* novi = napravi(v); novi->sl = (*pl); (*pl) = novi; } void ispisi(CVOR *pl){ if (pl==NULL) return; printf("%d ",pl->v); ispisi(pl->sl); printf("\n"); } void dodaj_na_kraj(CVOR **pl, int v){ CVOR *temp; if((*pl)==NULL){ dodaj_cvor(pl,v); 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(v); 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; } int duzina(CVOR *pl){ if(pl==NULL) return 0; return duzina(pl->sl)+1; } CVOR* izbaci(CVOR *pl, int v){ CVOR *temp, *preth, *akt; if(pl==NULL) return pl; /* spec. slucaj kad je bas prvi taj koji trazimo */ if(pl->v == v){ /* cuvamo da ne bi izgubili nakon free */ temp = pl->sl; free(pl); return temp; } preth = pl; akt = pl->sl; while(akt!=NULL){ if(akt->v == v){ preth->sl = akt->sl; free(akt); akt = NULL; return pl; } preth = preth->sl; akt = akt->sl; } return pl; } CVOR* ucitaj_listu(){ int n,i,v; CVOR *l=NULL; printf("El. liste: "); scanf("%d",&n); for(i=0; i