/ Published in: C++
Implementacija liste pomocu pokazivaca
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct podaci{ int sifra,datum; float cijena; char naziv[20],vrsta[20]; }; struct lista{ podaci pod; lista *slijedeci; }; void InitL(lista *L){ L -> slijedeci = NULL; }; int EndL(lista *L){ lista *a = L; int i = 1; while(a -> slijedeci){ a = a -> slijedeci; i++; }; return i; }; int FirstL(lista *L){ if(L->slijedeci==NULL) return NULL; else return 0; }; int NextL(int p, lista *L){ lista *a = L; int i = 0; while(i < p && a -> slijedeci){ a = a -> slijedeci; ++i; } ++i; return i; } int PreviousL(int p, lista *L){ lista *a = L; int i = 0; while( a -> slijedeci && i<p){ a = a -> slijedeci; ++i; } return i-1; } int LocateL(podaci x, lista *L){ bool nadeno = false; int i = 0; lista *a = L -> slijedeci; while(!nadeno && a->slijedeci){ ++i; if( x.sifra == a -> pod.sifra){ nadeno = true; break; } else a = a -> slijedeci; } if (nadeno) return i; else return 0; } int InsertL(podaci x, int p, lista *L){ int i=0; lista *insert,*trenutni, *zadnji; trenutni = L; zadnji = L->slijedeci; while (i<p && trenutni->slijedeci){ trenutni = trenutni->slijedeci; zadnji = zadnji->slijedeci; } insert = new lista; if(!insert) return 0; insert -> pod = x; trenutni -> slijedeci = insert; insert -> slijedeci = zadnji; return 1; } int DeleteL(char p[], lista *L){ if(!L) return 0; lista *a2 = L -> slijedeci; lista *a1 = L; while (a2){ if(!strcmp(p,a2->pod.naziv)){ a1 -> slijedeci = a2 -> slijedeci; delete a2; return 1; } if(!strcmp(p,a2->pod.vrsta)){ a1 -> slijedeci = a2 -> slijedeci; delete a2; return 1; } a1=a2; a2=a2->slijedeci; } return 0; } podaci RetrieveL(int p, lista *L){ int i = 0; lista *a = L -> slijedeci; while(i < p && a){ ++i; a = a -> slijedeci; }; return a -> pod; } void DeleteAllL(lista *L){ lista *a1 = L; lista *a2 = L -> slijedeci; while(a2){ delete a1; a1 = a2; a2 = a2 -> slijedeci; }; delete a1; L = NULL; }