/ Published in: C++
Implementacija liste pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct tdatum { short dan, mjesec, godina; }; struct tEl{ int sifra; char vrsta[50],naziv[50]; tdatum dat; float cijena; }; struct tLista{ tEl ziv; tLista *slj; }; tLista *lista= new tLista; int sifra=1,br_elem=0,v=0; void InitL(tLista *lista) { lista->slj=NULL; } void InsertL(tEl x,int p,tLista *lista) { tLista *zadnji=lista; for(int i=0;i<p;i++) zadnji=zadnji->slj; tLista *novi = new tLista; zadnji->slj=novi; novi->ziv=x; novi->slj=NULL; } tEl RetrieveL(int p,tLista* lista) { tLista *tekuci = lista->slj; for(int i=0;i<p;i++) tekuci=tekuci->slj; return tekuci->ziv; } int EndL(tLista *lista) { tLista* tekuci=lista; int p=0; while(tekuci->slj) { tekuci=tekuci->slj; p++; } return p; } void DeleteL(int p, tLista *lista) { tLista *brisi = lista->slj,*prethodni=lista; for(int i=0;i<p;i++) { prethodni=brisi; brisi=brisi->slj; } prethodni->slj=brisi->slj; delete brisi; } int LocateL(char x[],tLista* lista) { tLista *tekuci=lista; int p=0; while(tekuci) { if(tekuci->slj==NULL) return EndL(lista); if(!strcmp((tekuci->slj)->ziv.naziv,x)||(v==1&&!strcmp((tekuci->slj)->ziv.vrsta,x))) return p; tekuci=tekuci->slj; p++; } return EndL(lista); } int FirstL(tLista* lista) { if(lista->slj==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; } void DeleteAllL(tLista* lista) { tLista* prethodni=lista,*tekuci=lista->slj; while(tekuci) { delete prethodni; prethodni=tekuci; tekuci=tekuci->slj; } delete prethodni; lista=NULL; }