#include #include typedef struct element{ int broj; struct element * sledeci; } Element; void obrisiListu(Element * glava) { Element * temp = glava; while(temp != NULL) { Element * t = temp; temp = temp->sledeci; free(t); } } void odstampajListu(Element * glava) { Element * temp = glava; while(temp != NULL) { printf("%d, ",temp->broj); temp = temp->sledeci; } printf("\n"); } void obrniListu(Element ** lista) { Element * prethodni = NULL, *trenutni = *lista; while(trenutni != NULL) { Element * sledeci = trenutni->sledeci; trenutni->sledeci = prethodni; prethodni = trenutni; trenutni = sledeci; } *lista = prethodni; } void dodajNaPocetak(Element ** lista, Element* element) { if (*lista == NULL) *lista = element; else { element->sledeci = *lista; *lista = element; } } void dodajNaKraj(Element ** lista, Element* element) { if (*lista == NULL) { *lista = element; } else { Element * temp = *lista; while(temp->sledeci != NULL) { temp = temp->sledeci; } temp->sledeci = element; } } void dodajSortirano(Element ** lista, Element* element) { if (*lista == NULL || (*lista)->broj > element->broj) { element->sledeci = *lista; *lista = element; } else { Element * temp = *lista; while(temp->sledeci != NULL && temp->sledeci->broj <= element->broj) { temp = temp->sledeci; } element->sledeci = temp->sledeci; temp->sledeci = element; } } void napraviListu(Element ** glava) { int x; while(scanf("%d",&x) == 1) { Element* element = malloc(sizeof(Element)); element->broj = x; element->sledeci = NULL; dodajNaKraj(glava, element); } } void obrisiElement(Element ** lista, int x) { Element * temp = *lista; Element * prethodni = NULL; while(temp != NULL) { if (temp->broj == x) { if (temp == *lista) { *lista = temp->sledeci; free(temp); temp = *lista; } else { prethodni->sledeci = temp->sledeci; free(temp); temp = prethodni->sledeci; } } else { prethodni = temp; temp = temp->sledeci; } } } void napraviListuIzFajla(Element ** glava,char* naziv) { int x; FILE *f = fopen(naziv, "r"); if (f == NULL) { printf("Nije moguce otvoriti fajl!\n"); exit(1); } while(fscanf(f,"%d",&x) == 1) { Element* element = malloc(sizeof(Element)); element->broj = x; element->sledeci = NULL; dodajNaKraj(glava, element); } fclose(f); } void main() { Element * glava = NULL; napraviListuIzFajla(&glava,"unos.txt"); odstampajListu(glava); obrisiElement(&glava, 5); odstampajListu(glava); obrisiListu(glava); }