/***************************************************************** * Ovo delo zaštićeno je licencom Creative Commons CC BY-NC-ND 4.0 * (Attribution-NonCommercial-NoDerivatives 4.0 International License). * Za detalje pogledati LICENSE.TXT * Autori: Milena Vujosevic Janicic, Jelena Graovac, Nina Radojicic, * Ana Spasic, Mirko Spasic, Andjelka Zecevic ******************************************************************/ #ifndef _LISTA_H_ #define _LISTA_H_ /* Struktura kojom je predstavljen cvor liste sadrzi celobrojni podatak vrednost i pokazivac na sledeci cvor liste */ typedef struct cvor { int vrednost; struct cvor *sledeci; } Cvor; /* Funkcija kreira cvor, vrednost novog cvora inicijalizuje na broj, dok pokazivac na sledeci cvor postavlja na NULL. Vraca pokazivac na novokreirani cvor ili NULL ako alokacija nije bila uspesna. */ Cvor *napravi_cvor(int broj); /* Funkcija oslobadja dinamicku memoriju zauzetu za cvorove liste ciji se pokazivac glava nalazi na adresi adresa_glave. */ void oslobodi_listu(Cvor ** adresa_glave); /* Funkcija dodaje broj na pocetak liste. Vraca 1 ukoliko je bilo greske pri alokaciji memorije, inace vraca 0. */ int dodaj_na_pocetak_liste(Cvor ** adresa_glave, int broj); /* Funkcija pronalazi i vraca pokazivac na poslednji cvor liste, ili NULL ukoliko je lista prazna. */ Cvor *pronadji_poslednji(Cvor * glava); /* Funkcija dodaje broj na kraj liste. Vraca 1 ukoliko je bilo greske pri alokaciji memorije, inace vraca 0. */ int dodaj_na_kraj_liste(Cvor ** adresa_glave, int broj); /* Pomocna funkcija pronalazi cvor u listi iza koga treba umetnuti nov cvor sa vrednoscu broj. */ Cvor *pronadji_mesto_umetanja(Cvor * glava, int broj); /* Funkcija dodaje broj iza zadatog cvora. Vraca 1 ukoliko je dodavanje uspesno, odnosno 0 ukoliko je doslo do greske. */ int dodaj_iza(Cvor * tekuci, int broj); /* Funkcija dodaje broj u sortiranu listu tako da lista ostane sortirana. Vraca 1 ukoliko je bilo greske pri alokaciji memorije, inace vraca 0. */ int dodaj_sortirano(Cvor ** adresa_glave, int broj); /* Funkcija trazi u listi cvor cija je vrednost jednaka datom broju. Vraca pokazivac na cvor liste u kome je sadrzan trazeni broj ili NULL u slucaju da takav cvor ne postoji u listi. */ Cvor *pretrazi_listu(Cvor * glava, int broj); /* Funkcija trazi u listi cvor cija je vrednost jednaka datom broju. Vraca pokazivac na cvor liste u kome je sadrzan trazeni broj ili NULL ako da takav cvor ne postoji. U pretrazi oslanja se na cinjenicu se pretrazuje neopadajuce sortirana lista. */ Cvor *pretrazi_sortiranu_listu(Cvor * glava, int broj); /* Funkcija brise iz liste sve cvorove koji sadrze dati broj. Azurira pokazivac na glavu liste, koji moze biti promenjen u slucaju da se obrise stara glava. */ void obrisi_cvor(Cvor ** adresa_glave, int broj); /* Funkcija brise iz liste sve cvorove koji sadrze dati broj, oslanjajuci se na cinjenicu da je prosledjena lista sortirana neopadajuce. Azurira pokazivac na glavu liste, koji moze biti promenjen ukoliko se obrise stara glava liste. */ void obrisi_cvor_sortirane_liste(Cvor ** adresa_glave, int broj); /* Funkcija prikazuje vrednosti cvorova liste pocev od glave ka kraju liste, razdvojene zapetama i uokvirene zagradama. */ void ispisi_listu(Cvor * glava); #endif