/ Published in: C++
biblioteka pokazivac
Expand |
Embed | Plain Text
#include <iostream> using namespace std; struct podaci{ int sifra; char naziv[42], vrsta[42]; float cijena; short dan,mj,godina; }; struct animal{ podaci zivotinja; animal *sljedeci; }; //------------------------------------------------------------------------------ int var(){ return 0; } typedef animal *element; animal *EndL(animal *lista) { element zadnji=lista; while(zadnji->sljedeci) { zadnji=zadnji->sljedeci; } return zadnji->sljedeci; }; animal *FirstL(animal *lista) { return lista->sljedeci; }; animal *NextL(element trenutni,animal *lista) { return trenutni->sljedeci; }; /*element PreviousL(element p, animal *list){ animal *tekuci = list->sljedeci; while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL) tekuci=tekuci->sljedeci; return tekuci; }*/ animal *PreviousL(element trenutni, animal *lista) { if(trenutni==FirstL(lista)) { cout<<"* Pogreska @ PreviousL: Ne postoji element prije trazenog elementa!"<<endl; return NULL; } else if(trenutni==EndL(lista)) return trenutni; else { animal *prethodni=lista->sljedeci, *tekuci=lista; while(trenutni!=prethodni) { prethodni=prethodni->sljedeci; tekuci=tekuci->sljedeci; } return tekuci; } }; element LocateL(int upit, animal *lista) { animal *tekuci=lista->sljedeci; while(tekuci) { if(tekuci->zivotinja.sifra==upit) return tekuci; //if(tekuci->zivotinja.naziv==upit2) return tekuci; tekuci=tekuci->sljedeci; } cout<<"LocateL: U listi ne postoji trazena vrijednost!"<<endl; return EndL(lista); }; element LocateL(int upit,char trazi[42], animal *lista) { animal *tekuci=lista->sljedeci; while(tekuci) { if(!strcmp(tekuci->zivotinja.naziv,trazi))return tekuci; if(!strcmp(tekuci->zivotinja.vrsta,trazi))return tekuci; tekuci=tekuci->sljedeci; } cout<<"LocateL: U listi ne postoji trazena vrijednost!"<<endl; return EndL(lista); }; void InsertL(podaci x, element pozicija, animal *lista) { element novi=new animal; if(pozicija==lista) { novi->sljedeci=NULL; lista->sljedeci=novi; novi->zivotinja=x; return; } element prethodni=lista, tekuci=lista->sljedeci; while(tekuci!=pozicija) { tekuci=tekuci->sljedeci; prethodni=prethodni->sljedeci; } novi->sljedeci=prethodni->sljedeci; prethodni->sljedeci=novi; novi->zivotinja=x; }; void DeleteL(element trazeni, animal *lista) { element brisi=lista->sljedeci, prethodni=lista; while(brisi!=trazeni) { prethodni=prethodni->sljedeci; brisi=brisi->sljedeci; } if(brisi==trazeni) { prethodni->sljedeci=brisi->sljedeci; delete brisi; } else cout<<"DeleteL: U listi ne postoji trazeni element!"<<endl; }; podaci RetrieveL(element trazeni,animal *lista) { animal *trenutni=lista; while(trenutni!=trazeni) { trenutni=trenutni->sljedeci; } if(trenutni==trazeni) { return trenutni->zivotinja; } cout<<"RetrieveL: U listi ne postoji trazeni element!"<<endl; }; void DeleteAllL(animal *lista) { animal *brisi=lista; while(lista->sljedeci!=NULL) { brisi=lista->sljedeci; lista->sljedeci=brisi->sljedeci; delete brisi; } }; animal *InitL(animal *lista) { lista->sljedeci=NULL; }; /* animal *InitL (animal *glava){ element zadnji; glava=new animal; zadnji=new animal; glava->sljedeci=zadnji; zadnji->sljedeci=NULL; return glava; }*/
You need to login to post a comment.
