/ Published in: C++
lista_polje
Expand |
Embed | Plain Text
struct datum { int dan, godina, mjesec; }; struct podaci { int sifra; char vrsta[40],naziv[40]; float cijena; datum dat_dost; }; struct tlista { podaci zivotinja [5000]; int cursor; }; tlista lista; int sifra=1, br=0,v=0; int firstl (tlista lista) { return 0; } void insertl(podaci x, int p, tlista& lista){ lista.zivotinja[p]=x; lista.cursor++; } int endl(tlista& lista){ return lista.cursor; } int nextl (int p, tlista& lista){ if (p==endl(lista)-1) return endl (lista); else return p+1; } int locatel (char x[], tlista& lista){ int p=endl(lista); bool lociran = 0; for(int i=0;i<p;i++) if(!strcmp(lista.zivotinja[i].naziv,x)||(v==1&&!strcmp(lista.zivotinja[i].vrsta,x))){ lociran=1; return i;} if (!lociran) return p; } void initl (tlista& lista){ lista.cursor=0; } void deletel(int p, tlista& lista){ if(p==endl(lista)-1) lista.cursor--; else{ for (int i=p;i<endl(lista)-1;i++) lista.zivotinja[i]=lista.zivotinja[i+1]; lista.cursor--;} } podaci retrieveL (int p, tlista& lista){ return lista.zivotinja [p]; } void deleteallL (tlista &lista) { lista.cursor=0; } void spoji(podaci a[], int i, int k, int j) { int I=i,J=k+1,K=0; podaci *b = new podaci [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(podaci 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.zivotinja,0,br-1); }
You need to login to post a comment.
