====== Liste ====== Lista je struktura podataka koja se odlikuje linearnom raspodelom pripadajućih elemenata. Najsličnija je nizu, a član liste je struktura koja sadrži podatke i pokazivač na sledeći član liste. ==== Osobine ==== Svaka lista mora da zadovoljava sledeće osobine: * Lista može biti prazna * Moguće je ubacivanje elemenata u listu * Moguće je izbaciti bilo koji element iz liste * Lista ima svoju veličinu tj broj elemenata ==== Vrste ==== Po povezanosti liste mogu da budu: - Jednostruko povezane\\ - Dvostruko povezane\\ Po svom obliku dele se ne : - Linearne\\ - Kružne\\ ==== Linearne liste ==== === Jednostruko povezane liste === Jednostruko povezane liste podržavaju pretrazivanje članova samo u jednom smeru. Član liste je struktura koja sadrži podatke i pokazivač na sledeći član u listi. Struktura\\ struct lista{ int podatak; struct lista *sledeci; }; {{:LISTE.png|}} Najčešće se koriste kada je pretraživanje u jednom smeru dovoljno za dati problem. === Dvostruko povezane liste === Kod dvostruko povezanih lista moguće je pretraživanje u oba smera. Član ove liste je struktura koja sadrži podatke i pokazivače na sledeći i prethodni clan liste. Struktura\\ struct lista{ int podatak; struct lista *sledeci,*prethodni; }; ==== Kružne liste ==== Kružna liste se odlikuje po tome sto nema početak. Za razliku od linearnih lista kod kojih su jasno izraženi početni i krajnji clan liste, kod kružne liste poslednji ubačeni clan liste se postavlja da pokazuje na prvi. Svaki element može da bude prvi element nez remećenja strukture. Program koji formira i ispisuje listu na ekran #include #include struct lista{ int broj; struct lista *rep; }; #define novi(x) x=(struct lista*)malloc(sizeof(struct lista)) void dodaj(struct lista **p,int k){ struct lista *temp; novi(temp); if (!temp) { printf("Greska pri alokaciji memorije\n"); exit(0); } temp->broj=k; temp->rep=*p; *p=temp; } struct lista *form_list(){ int m; struct lista *p; p=NULL; scanf("%d",&m); while(m){ dodaj(&p,m); scanf("%d",&m); } return p; } void ispis(struct lista *p){ while(p) { printf("%5d",p->broj); p=p->rep; } printf("\n"); } main(){ struct lista *p; p=form_list(); ispis(p); } Više o listama na [[http://imi.pmf.kg.ac.rs/moodle/mod/resource/view.php?id=1625|SPA2]] [[studentske-strane|Nazad]]