/ Published in: C++
Biblioteka zaglavlja s funkcijama za implementaciju liste pomoću polja
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
struct zivotinje { int sifra; int dan, godina; char mjesec[15]; char vrsta[40]; char naziv[40]; float cijena; }; struct lis { zivotinje values[200]; int cursor; }; lis lista; int br_elem=1; int FirstL (lis lista) { return 0; } int EndL (lis lista) { return lista.cursor; } int NextL (int p, lis lista) { if (p<lista.cursor) return p+1; else return 0; } int PreviousL (int p, lis lista) { if (p) return p-1; else return -1; } int LocateL (char naziv[], lis& lista) { for (int i=0; i<lista.cursor; i++) if (naziv==lista.values[i].naziv) return i; return EndL(lista); } void InsertL (zivotinje x, int p, lis &lista) { lista.cursor++; for (int i=lista.cursor-1; i>p; i--) lista.values[i]=lista.values[i-1]; lista.values[p]=x; } void DeleteL (int p, lis &lista) { lista.cursor--; for (int i=p; i<lista.cursor; i++) lista.values[i]=lista.values[i+1]; } zivotinje Retreive (int p, lis lista) { return lista.values[p]; } void DeleteAllL (lis &lista) { lista.cursor=0; } void InitL (lis &lista) { lista.cursor=0; } void spoji(zivotinje a[], int i, int k, int j) { int I=i,J=k+1,K=0; zivotinje *b = new zivotinje [j-i+1]; while(I<=k && J<=j){ if(a[I].cijena>a[J].cijena) b[K++]=a[I++]; else if(a[I].cijena<a[J].cijena) b[K++]=a[J++]; else if(strcmp(a[I].naziv,a[J].naziv)==-1) b[K++]=a[J++]; else b[K++]=a[I++]; } if(I>k) while(J<=j) b[K++]=a[J++]; else while(I<=k) b[K++]=a[I++]; for(I=0;I<=j-i;I++) a[i+I]=b[I]; delete [] b; } void msort(zivotinje a[],int i, int j) { if(i<j) { int k=(i+j)/2; msort(a,i,k); msort(a,k+1,j); spoji(a,i,k,j); } } void msort() { msort(lista.values,0,br_elem-1); }