/ Published in: C++
U ovoj biblioteci su definirane funkcije za izvršavanje operacija nad ATP listom: iniciranje prazne liste(InitL), funkcije koje vraćaju pozicije prvog i zadnjeg elementa(FirstL i EndL), funkcija za umetanje elementa(InsertL), funkcija koja vraća vrijednost elementa na nekoj poziciji(RetrieveL) te funkcije za brisanje pojedinog elementa(DeleteL) ili cijele liste(DeleteAllL).
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct elementtype{ int sifra; char naziv[30]; char vrsta[30]; float cijena; struct{ int dan, mjesec, godina; }datum_dostave; }; struct lis { elementtype value; lis *next; }; typedef lis *element; typedef lis list; void DeleteAllL(list* L){ while(L->next){ element toDelete = L->next; if(L->next){ L->next = toDelete->next; delete toDelete; } } delete L; L = NULL; } list* InitL(list* L){ if(L!=NULL) DeleteAllL(L); else{ list *newList = new list; newList->next = NULL; return newList; } return NULL; } element FirstL(list* L){ return L; } element EndL(list* L){ element current = L; while(current->next){ current = current->next; } return current; } element NextL(element p, list *L){ if(p!=NULL){ if(p==EndL(L)){ return NULL; } return p->next; } return EndL(L); } element PreviousL(element p, list *L){ element current = L; while(current){ if(current->next == p ) return current; current = current->next; } return NULL; } element LocateL(elementtype el, list* L){ element current = L; while(current->next){ if(current->next->value.sifra == el.sifra) return current; current = current->next; } return NULL; } void InsertL(elementtype el, element p, list* L){ if(p==NULL) return; else{ element novi = new lis; novi->value = el; novi->next = p->next; p->next = novi; } } void DeleteL(element p, list* L){ element toDelete = p->next; if(toDelete){ p->next = toDelete->next; delete toDelete; } } elementtype RetrieveL(element p, list* L){ return p->next->value; }