/ Published in: C++
implementacija liste pomocu polja
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct tDatum{ short dan, godina; char mjesec[8]; }; struct tZivotinja{ int sifra; char vrsta[50],naziv[50]; tDatum datum; float cijena; }; struct tLista{ tZivotinja zivotinja; tLista *slijedeci; }; tLista *lista=new tLista; int sifra=1,br_elem=0; int br=0; void InitL(tLista *lista){ lista->slijedeci=NULL; } int EndL(tLista *lista){ tLista* tekuci=lista; int p=0; while(tekuci->slijedeci){ tekuci=tekuci->slijedeci; p++; } return p; } int FirstL(tLista* lista){ if(lista->slijedeci==NULL) return EndL(lista); return 0; } int PreviousL(int p,tLista* lista){ if(p==FirstL(lista)) return -1; return p-1; } int NextL(int p,tLista* lista){ if(p==EndL(lista)) return -1; if(p==PreviousL(EndL(lista),lista)) return EndL(lista); return p+1; } int LocateL(char x[],tLista* lista){ tLista *tekuci=lista; int p=0; while(tekuci){ if(tekuci->slijedeci==NULL) return EndL(lista); if(!strcmp((tekuci->slijedeci)->zivotinja.naziv,x)||(br==1&&!strcmp((tekuci->slijedeci)->zivotinja.vrsta,x))) return p; tekuci=tekuci->slijedeci; p++; } return EndL(lista); } void InsertL(tZivotinja x,int p,tLista *lista) { tLista *zadnji=lista; for(int i=0;i<p;i++) zadnji=zadnji->slijedeci; tLista *novi = new tLista; zadnji->slijedeci=novi; novi->zivotinja=x; novi->slijedeci=NULL; } void DeleteL(int p, tLista *lista) { tLista *brisi = lista->slijedeci,*prethodni=lista; for(int i=0;i<p;i++) { prethodni=brisi; brisi=brisi->slijedeci; } prethodni->slijedeci=brisi->slijedeci; delete brisi; } tZivotinja RetrieveL(int p,tLista* lista) { tLista *tekuci = lista->slijedeci; for(int i=0;i<p;i++) tekuci=tekuci->slijedeci; return tekuci->zivotinja; } void DeleteAll(tLista* lista) { tLista* prethodni=lista,*tekuci=lista->slijedeci; while(tekuci) { delete prethodni; prethodni=tekuci; tekuci=tekuci->slijedeci; } delete prethodni; lista=NULL; }