/ Published in: C++
Struktura headera lista_polje.h , za implementaciju liste putem polja.
Expand |
Embed | Plain Text
typedef int elem; struct podaci{ int sifra,datum[3]; float cijena; char naziv[50],vrsta[50]; }; struct lista_unos{ podaci value[1000]; int kursor; }; typedef lista_unos lista; elem EndL(lista *polje){ return polje->kursor; } elem FirstL(lista *polje){ if(polje->kursor==0) return EndL(polje); else return 0; } lista *InitL(lista *polje){ polje=new lista; polje->kursor=0; return polje; } elem InsertL(podaci x,elem poz,lista *polje){ if(poz<0 || poz>polje->kursor) return 0; else{ int krs=polje->kursor; for(int i=krs-1;i>=poz;i--) polje->value[i+1]=polje->value[i]; polje->value[poz]=x; polje->kursor++; return 1; } } podaci RetrieveL(elem poz, lista *b){ return b->value[poz]; } elem DeleteL(elem poz, lista *b){ if(b->kursor==0) return 0; if(poz<0 || poz>=b->kursor) return 0; if(poz==EndL(b)) return 0; if(poz==FirstL(b)){ b->kursor--; for(int i=poz;i<b->kursor;i++) b->value[i]=b->value[i+1]; return 1; } else{ b->kursor--; for(int i=poz;i<b->kursor;i++) b->value[i]=b->value[i+1]; return 1; } } elem PreviousL(elem poz, lista *b){ if(poz==FirstL(b)) return -1; if(poz==EndL(b)) return poz-1; else return poz-1; } elem LocateL(podaci x, lista *b){ elem poz=PreviousL(EndL(b),b); if(x.cijena==1) if(FirstL(b)!=EndL(b)) while(false==(!true)){ podaci tren=RetrieveL(poz,b); if(strcmp(x.naziv,tren.naziv)==0) return poz; if(poz==FirstL(b)) break; poz=PreviousL(poz,b); } if(x.cijena==2) if(FirstL(b)!=EndL(b)) while(false==(!true)){ podaci tren=RetrieveL(poz,b); if(strcmp(x.vrsta,tren.vrsta)==0) return poz; if(poz==FirstL(b)) break; poz=PreviousL(poz,b); } return EndL(b); } elem NextL(elem poz, lista *b){ if(poz==EndL(b)-1) return EndL(b); if(poz==EndL(b)) return 0; else return poz+1; } elem DeleteAllL(lista *b){ return b->kursor==0; }
You need to login to post a comment.
