/ Published in: C++
Header koji nam služi za realizaciju implementacije liste preko pokazivača!
Expand |
Embed | Plain Text
#include <iostream> #include <cstring> using namespace std; struct Tblag{ unsigned short sifra; char vrsta[20]; char naziv[30]; float cijena; unsigned short dan,mjesec,godina; }; struct zivotinje{ Tblag zivina; zivotinje *pok_next; }; zivotinje *lista=new zivotinje; typedef zivotinje *pomoc; int brojac_mista_polje; zivotinje *FirstL(zivotinje *lista){ return lista->pok_next; } zivotinje *EndL(zivotinje *lista){ zivotinje *zadnji=lista; while(zadnji->pok_next)zadnji=zadnji->pok_next; return zadnji->pok_next; } zivotinje *NextL(zivotinje *pozicija,zivotinje *lista){ return pozicija->pok_next; } zivotinje *PreviousL(zivotinje *pozicija,zivotinje *lista){ zivotinje *tekuci=lista; while(tekuci->pok_next!=pozicija){ tekuci=tekuci->pok_next; } return tekuci; } void InsertL(Tblag x,zivotinje *pozicija, zivotinje *lista){ zivotinje *novi=new zivotinje; pozicija=PreviousL(pozicija,lista); novi->zivina=x; novi->pok_next=pozicija->pok_next; pozicija->pok_next=novi; } zivotinje *LocateL(int b,Tblag x,zivotinje *lista){ zivotinje *tekuci=lista->pok_next; if(b==0)tekuci=lista->pok_next; int a=0; while(tekuci){ while(a!=b){a++;tekuci=tekuci->pok_next;} if((strcmp(x.naziv,tekuci->zivina.naziv))==0)return tekuci; b++; tekuci=tekuci->pok_next; }//kraj while return EndL(lista); }//kraj locate s tri argumenta zivotinje *LocateL(Tblag x,zivotinje *lista){ zivotinje *tekuci=lista->pok_next; while(tekuci){ if(strcmp(x.vrsta,tekuci->zivina.vrsta)==0)return tekuci; tekuci=tekuci->pok_next; }//kraj while return EndL(lista); } void LocateL_brojac(int b,Tblag x,zivotinje *lista){ brojac_mista_polje=-1; zivotinje *tekuci=lista->pok_next; while(tekuci){ if((strcmp(x.naziv,tekuci->zivina.naziv)==0)|| (strcmp(x.vrsta,tekuci->zivina.vrsta)==0)) brojac_mista_polje++; tekuci=tekuci->pok_next; } }//kraj locate s tri argumenta za prebrojavanje Tblag RetriveL(zivotinje *pozicija,zivotinje *lista){ return pozicija->zivina; } void *DeleteL(zivotinje *pozicija,zivotinje *lista){ pozicija=PreviousL(pozicija,lista); zivotinje *tekuci=pozicija->pok_next; pozicija->pok_next=tekuci->pok_next; delete tekuci; }//kraj deletea void *DeleteALL(zivotinje *lista){ while(lista->pok_next){ zivotinje *tekuci=lista->pok_next; lista->pok_next=tekuci->pok_next; delete tekuci; }//kraj while delete lista; } void *InitL(zivotinje *lista){ lista->pok_next=NULL; } zivotinje *InitL_MS(zivotinje *lista){ lista=NULL; if(lista!=NULL) DeleteALL(lista); else{ zivotinje *newList = new zivotinje; newList->pok_next = NULL; return newList; } return NULL; }//kraj
You need to login to post a comment.
