Posted By

bernardamatkovic on 11/11/12


Tagged

Lista-polje


Versions (?)

Biblioteka listapolje.h


 / Published in: C++
 

Biblioteka zaglavlja s funkcijama za implementaciju liste pomoću polja

  1. struct zivotinje {
  2. int sifra;
  3. int dan, godina;
  4. char mjesec[15];
  5. char vrsta[40];
  6. char naziv[40];
  7. float cijena;
  8. };
  9.  
  10. struct lis {
  11. zivotinje values[200];
  12. int cursor;
  13. };
  14.  
  15. lis lista;
  16.  
  17. int br_elem=1;
  18.  
  19. int FirstL (lis lista) {
  20. return 0;
  21. }
  22. int EndL (lis lista) {
  23. return lista.cursor;
  24. }
  25. int NextL (int p, lis lista) {
  26. if (p<lista.cursor) return p+1;
  27. else return 0;
  28. }
  29. int PreviousL (int p, lis lista) {
  30. if (p) return p-1;
  31. else return -1;
  32. }
  33. int LocateL (char naziv[], lis& lista) {
  34. for (int i=0; i<lista.cursor; i++) if (naziv==lista.values[i].naziv) return i;
  35. return EndL(lista);
  36. }
  37. void InsertL (zivotinje x, int p, lis &lista) {
  38. lista.cursor++;
  39. for (int i=lista.cursor-1; i>p; i--) lista.values[i]=lista.values[i-1];
  40. lista.values[p]=x;
  41. }
  42.  
  43.  
  44. void DeleteL (int p, lis &lista) {
  45. lista.cursor--;
  46. for (int i=p; i<lista.cursor; i++) lista.values[i]=lista.values[i+1];
  47. }
  48.  
  49.  
  50. zivotinje Retreive (int p, lis lista) {
  51. return lista.values[p];
  52. }
  53. void DeleteAllL (lis &lista) {
  54. lista.cursor=0;
  55. }
  56. void InitL (lis &lista) {
  57. lista.cursor=0;
  58. }
  59.  
  60.  
  61. void spoji(zivotinje a[], int i, int k, int j) {
  62. int I=i,J=k+1,K=0;
  63. zivotinje *b = new zivotinje [j-i+1];
  64.  
  65. while(I<=k && J<=j){
  66.  
  67. if(a[I].cijena>a[J].cijena) b[K++]=a[I++];
  68. else if(a[I].cijena<a[J].cijena) b[K++]=a[J++];
  69. else if(strcmp(a[I].naziv,a[J].naziv)==-1) b[K++]=a[J++];
  70. else b[K++]=a[I++];
  71.  
  72. }
  73.  
  74. if(I>k) while(J<=j) b[K++]=a[J++];
  75. else while(I<=k) b[K++]=a[I++];
  76.  
  77. for(I=0;I<=j-i;I++) a[i+I]=b[I];
  78. delete [] b;
  79.  
  80. }
  81.  
  82. void msort(zivotinje a[],int i, int j) {
  83. if(i<j) {
  84. int k=(i+j)/2;
  85. msort(a,i,k);
  86. msort(a,k+1,j);
  87. spoji(a,i,k,j);
  88. }
  89. }
  90.  
  91. void msort() {
  92. msort(lista.values,0,br_elem-1);
  93. }

Report this snippet  

You need to login to post a comment.