/ Published in: C++
datoteka zaglavlja s funkcijama za implementaciju liste pomoću pokazivaÄa
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct zivotinja{ int sifra; char vrsta[20],naziv[20]; float cijena; char datum[15]; zivotinja *slijedeci; }; typedef zivotinja pomocna; typedef zivotinja *tip; zivotinja *InitL(zivotinja *&lista){ lista=new zivotinja; lista->slijedeci=NULL; return lista; } zivotinja* EndL(zivotinja *lista){ zivotinja *pom=lista; while(pom->slijedeci) pom=pom->slijedeci; return pom->slijedeci; } zivotinja* FirstL(zivotinja *lista){ if(lista->slijedeci==NULL) return EndL(lista); return lista->slijedeci; } zivotinja* NextL(zivotinja* p, zivotinja *lista){ if(p->slijedeci==NULL) return 0;// zadnji elementa (=NULL) nema sljedeci pokazivac -> error return p->slijedeci; } zivotinja* PreviousL(zivotinja* p, zivotinja *lista){ if(lista->slijedeci==NULL) return 0;// 1. element nema prethodnog -> error zivotinja *pom=lista; while(pom->slijedeci && p!=pom->slijedeci) pom=pom->slijedeci; return pom; } zivotinja* LocateL(int sifra, zivotinja *lista){// trazi sifru zivotinja *pom=lista->slijedeci; while(pom){ if(pom->sifra==sifra) return pom; pom=pom->slijedeci; } return EndL(lista); } bool InsertL(zivotinja x, zivotinja* p, zivotinja *lista){// na p dodajemo x zivotinja *pom=new zivotinja; pom->slijedeci=NULL; pom->sifra=x.sifra; pom->cijena=x.cijena; strcpy(pom->datum,x.datum); strcpy(pom->naziv,x.naziv); strcpy(pom->vrsta,x.vrsta); if(lista->slijedeci==NULL) p=lista; // dodavanje 1. elementa if(p==NULL && PreviousL(p,lista)) p=PreviousL(p,lista); // na EndL pom->slijedeci=p->slijedeci; p->slijedeci=pom; return true; } zivotinja RetrieveL(zivotinja* p, zivotinja *lista){ zivotinja pom; if(p!=NULL){ pom.sifra=p->sifra; pom.cijena=p->cijena; strcpy(pom.datum,p->datum); strcpy(pom.naziv,p->naziv); strcpy(pom.vrsta,p->vrsta); } return pom; } bool DeleteL(zivotinja* p, zivotinja *lista){ if(p && p->slijedeci){ zivotinja* pom=p->slijedeci; // brisemo p->slijedeci p->slijedeci=p->slijedeci->slijedeci; delete pom; return true; } else return false; } void DeleteAllL(zivotinja *lista){ zivotinja* pom; while(lista->slijedeci){ pom=lista->slijedeci; lista->slijedeci=lista->slijedeci->slijedeci; delete pom; } }