/ Published in: C++
Struktura headera za implementaciju liste putem pokazivaÄa, koja se ukljuÄuje unutar glavnog programa
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct podaci{ int sifra,datum[3]; float cijena; char naziv[50],vrsta[50]; }; struct lista_unos{ podaci value; lista_unos *sljedeci; }; typedef lista_unos *elem; typedef lista_unos lista; elem EndL(lista *lista){ return 0; } elem FirstL(lista *b){ if(b->sljedeci==NULL) return EndL(b); else return b->sljedeci; } lista *InitL(lista *b){ b=new lista; b->sljedeci=NULL; return b; } elem PreviousL(elem poz,lista *b){ if(poz==FirstL(b)) return 0; if(poz==EndL(b)){ while(b->sljedeci) b=b->sljedeci; return b; } else{ while(b->sljedeci!=poz) b=b->sljedeci; return b; } } int InsertL(podaci x, lista *poz, lista *b){ lista *tren,*novi; tren=b; if(poz>tren->sljedeci || poz<0) return 0; if(poz==EndL(b)){ while(b->sljedeci) b=b->sljedeci; novi=new lista; novi->sljedeci=NULL; b->sljedeci=novi; novi->value=x; return 1; } else{ poz=PreviousL(poz,b); novi=new lista; novi->sljedeci=b->sljedeci; poz->sljedeci=novi; novi->value=x; return 1; } } podaci RetrieveL(elem poz, lista *b){ return poz->value; } int DeleteL(elem poz, lista *b){ elem tekuci=poz,prosli; if(FirstL(b)==EndL(b)) return 0; if(poz==EndL(b)) return 0; if(poz==FirstL(b)){ b->sljedeci=tekuci->sljedeci; delete tekuci; return 1; } else{ prosli=PreviousL(tekuci,b); prosli->sljedeci=tekuci->sljedeci; delete tekuci; return 1; } return 0; } 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->sljedeci==NULL) return EndL(b); if(poz==EndL(b)) return 0; else return poz->sljedeci; } elem DeleteAllL(lista *b){ elem tren,prosli; prosli=b; tren=b->sljedeci; while(tren){ delete prosli; prosli=tren; tren=tren->sljedeci; } delete prosli; b=NULL; return NULL; }