Posted By

dmacan23 on 11/12/12


Tagged

lista sp Strukture ATP strukturepodataka Macan


Versions (?)

Strukture_Podataka_Macan_Z1-listapolje.cpp


 / Published in: C++
 

  1. Zadatak kolegija "Strukture podataka" na Fakultetu Organizacije i Informatike u Varaždinu. Trebalo je napraviti program koji služi za evidenciju kućnih ljubimaca u trgovini za kućne ljubimce, i to pomoću ATP liste implementirane poljem i pokazivačima. Ovo je samo zaglavlje koje treba "glavna.cpp" kako bi radilo
  1. /*
  2.  * lista_polje.h
  3.  *
  4.  * Created on: Nov 8, 2012
  5.  * Author: David Ante Macan
  6.  */
  7.  
  8. #ifndef LISTA_POLJE_H_
  9. #define LISTA_POLJE_H_
  10.  
  11. #include <iostream>
  12. using namespace std;
  13.  
  14. int provjera = 0;
  15.  
  16. struct tziv{
  17. int sifra;
  18. char vrsta[20];
  19. char naziv[20];
  20. float cijena;
  21. int datum[3];
  22. };
  23.  
  24. struct tlista{
  25. tziv ziv[1000];
  26. int kursor;
  27. };
  28.  
  29. typedef int tip;
  30.  
  31.  
  32. tip FirstL(tlista *L){
  33. return 0;
  34. }
  35.  
  36.  
  37. tip EndL(tlista *L){
  38. return L->kursor;
  39. }
  40.  
  41.  
  42. tip PreviousL(tip p, tlista *L){
  43. if(p!=FirstL(L))
  44. return p-1;
  45. else
  46. return -1;
  47. }
  48.  
  49.  
  50. tip NextL(tip p, tlista *L){
  51. if(p!=EndL(L))
  52. return p+1;
  53. else
  54. return -1;
  55. }
  56.  
  57.  
  58.  
  59. tlista *InitL(tlista *L){
  60. L = new tlista;
  61. L->kursor = 0;
  62. return L;
  63. }
  64.  
  65.  
  66. tip LocateL(tziv x, tlista *L){
  67. int K;
  68. for(K=0; K<EndL(L); K++ ){
  69. if(x.sifra!=0){
  70. if(x.sifra == L->ziv[K].sifra)
  71. return K;
  72. }
  73. }
  74. return EndL(L);
  75. }
  76.  
  77.  
  78. tip InsertL(tziv x, tip p, tlista *L){
  79. int K;
  80. for(K=EndL(L); K>p; K--)
  81. L->ziv[K] = L->ziv[K-1];
  82. L->ziv[p]=x;
  83. L->kursor=L->kursor+1;
  84. if(L->ziv[p].sifra == x.sifra)
  85. return 1;
  86. else
  87. return 0;
  88. }
  89.  
  90.  
  91. tziv RetrieveL(tip p, tlista *L){
  92. return L->ziv[p];
  93. }
  94.  
  95.  
  96. tip DeleteL(tip p, tlista *L){
  97. for(int i=p; i<EndL(L);i++){
  98. L->ziv[i]=L->ziv[i+1];
  99. }
  100. L->kursor = L->kursor - 1;
  101. return 1;
  102. }
  103.  
  104.  
  105. tip DeleteAllL(tlista *L){
  106. L->kursor = 0;
  107. return 0;
  108. }
  109.  
  110.  
  111. void Merge(tlista *L, int i, int k, int j){
  112. int pocetak = i, iduci = k+1, brojilo=0, velicina = j-i+1;
  113. tziv *pom = new tziv [velicina];
  114. while(pocetak<=k && iduci<=j){
  115. if((L->ziv[pocetak].cijena) > (L->ziv[iduci].cijena))
  116. pom[brojilo++]=L->ziv[pocetak++];
  117.  
  118. else if(L->ziv[pocetak].cijena < L->ziv[iduci].cijena)
  119. pom[brojilo++]=L->ziv[iduci++];
  120.  
  121. if(L->ziv[pocetak].cijena == L->ziv[iduci].cijena){
  122. if(strcmp(L->ziv[pocetak].naziv, L->ziv[iduci].naziv)==1)
  123. pom[brojilo++] = L->ziv[pocetak++];
  124.  
  125. else
  126. pom[brojilo++] = L->ziv[iduci++];
  127. }
  128. }
  129.  
  130. while(pocetak<=k)
  131. pom[brojilo++] = L->ziv[pocetak++];
  132.  
  133. while(iduci<=j)
  134. pom[brojilo++] = L->ziv[iduci++];
  135. for (int I=0; I<velicina; I++)
  136. L->ziv[i+I] = pom[I];
  137. delete[] pom;
  138. }
  139.  
  140.  
  141. void rMSort(tlista *L, tip pocetak, tip kraj){
  142. if(pocetak<kraj){
  143. int sredina=(pocetak+kraj)/2;
  144. rMSort(L,pocetak,sredina);
  145. rMSort(L,sredina+1,kraj);
  146. Merge(L,pocetak,sredina,kraj);
  147. }
  148. //ispispolja(L);
  149. }
  150.  
  151.  
  152.  
  153. void MSort(tlista *L, int i, int j){
  154. if(FirstL(L)==EndL(L)){
  155. cout<<"Lista je prazna ili ima samo 1 element"<<endl;
  156. return;
  157. }
  158. rMSort(L,0,EndL(L)-1);
  159. tziv tekuci;
  160. for(int i=0; i<=EndL(L)-1; i++){
  161. tekuci = L->ziv[i];
  162. cout<<"\n\n"
  163. <<"Sifra zivotinje: "<<tekuci.sifra<<endl
  164. <<"Vrsta zivotinje: "<<tekuci.vrsta<<endl
  165. <<"Naziv zivotinje: "<<tekuci.naziv<<endl
  166. <<"Cijena zivotinje: "<<tekuci.cijena<<endl
  167. <<"Datum dostave: "<<tekuci.datum[2]<<"."<<tekuci.datum[1]<<"."<<tekuci.datum[0]<<"."<<endl
  168. <<"-------------------------------------"<<endl<<endl;
  169. }
  170. }
  171.  
  172.  
  173. #endif /* LISTA_POLJE_H_ */

Report this snippet  

You need to login to post a comment.