Posted By

MNuli on 11/11/12


Tagged

lista sp pokazivac Strukture podataka polje implementacija zadatak1


Versions (?)

Datoteke zaglavlja - lista_polje.h i lista_pokazivac.h


 / Published in: C++
 

Datoteke zaglavlja - listapolje.h i listapokazivac.h

  1. Lista_polje.h
  2.  
  3.  
  4.  
  5. struct strukDatum {
  6. int dan,godina;
  7. char mjesec[16];
  8. };
  9.  
  10. struct zivotinja {
  11. int sifra;
  12. char vrsta[64],naziv[64];
  13. strukDatum datum;
  14. float cijena;
  15. };
  16.  
  17. struct listaPolje {
  18. zivotinja ljubimac[12000];
  19. int cursor;
  20. };
  21.  
  22. listaPolje lista;
  23. int sifra = 1, brojElemenata = 0;
  24.  
  25. void InitL(listaPolje& lista) {
  26. lista.cursor=0;
  27. }
  28.  
  29. void InsertL(zivotinja x, int p, listaPolje& lista) {
  30. lista.ljubimac[p] = x;
  31. lista.cursor++;
  32. }
  33.  
  34. zivotinja RetrieveL(int p, listaPolje& lista) {
  35. return lista.ljubimac[p];
  36. }
  37.  
  38. int EndL(listaPolje& lista) {
  39. return lista.cursor;
  40. }
  41.  
  42. int LocateL(char x[], listaPolje& lista) {
  43. int p = EndL(lista);
  44. bool lociran = 0;
  45. int i = 0;
  46. for(i; i<p; i++)
  47. if(!strcmp(lista.ljubimac[i].naziv, x) || !strcmp(lista.ljubimac[i].vrsta, x)) {
  48. lociran = 1;
  49. return i;
  50. }
  51. if(!lociran) return p;
  52. }
  53.  
  54. void DeleteL(int p, listaPolje& lista) {
  55. if(p == EndL(lista) - 1) lista.cursor--;
  56. else {
  57. for(int i=p; i<EndL(lista)-1; i++)
  58. lista.ljubimac[i] = lista.ljubimac[i + 1];
  59. lista.cursor--;
  60. }
  61. }
  62.  
  63. int FirstL(listaPolje& lista) {
  64. if(EndL(lista) == 0) return EndL(lista);
  65. return 0;
  66. }
  67.  
  68. int PreviousL(int p, listaPolje& lista) {
  69. if(p == FirstL(lista)) return -1;
  70. return p - 1;
  71. }
  72.  
  73. int NextL(int p, listaPolje& lista) {
  74. if(p == EndL(lista)) return -1;
  75. if(p == EndL(lista) - 1) return EndL(lista);
  76. return p + 1;
  77. }
  78.  
  79. void DeleteAll(listaPolje& lista) {
  80. lista.cursor = 0;
  81. }
  82.  
  83. void Vrati(zivotinja x, int p, listaPolje& lista) {
  84. lista.ljubimac[p] = x;
  85. }
  86.  
  87.  
  88.  
  89.  
  90. Lista_pokazivac.h
  91.  
  92.  
  93.  
  94. struct strukDatum {
  95. int dan,godina;
  96. char mjesec[16];
  97. };
  98.  
  99. struct zivotinja {
  100. int sifra;
  101. char vrsta[64],naziv[64];
  102. strukDatum datum;
  103. float cijena;
  104. };
  105.  
  106. struct listaPokazivac {
  107. zivotinja ljubimac;
  108. listaPokazivac *sljedeci;
  109. };
  110.  
  111. listaPokazivac *lista = new listaPokazivac;
  112. int sifra = 1, brojElemenata = 0;
  113.  
  114. void InitL(listaPokazivac *lista) {
  115. lista->sljedeci = NULL;
  116. }
  117.  
  118. void InsertL(zivotinja x, int p, listaPokazivac *lista) {
  119. listaPokazivac *zadnji = lista;
  120. for(int i=0; i<p; i++) zadnji = zadnji->sljedeci;
  121. if(zadnji->sljedeci == NULL) {
  122. listaPokazivac *novi = new listaPokazivac;
  123. zadnji->sljedeci = novi;
  124. novi->ljubimac = x;
  125. novi->sljedeci = NULL;
  126. }
  127. else {
  128. listaPokazivac* novi = lista;
  129. for(int i=0; i<=p; i++) novi = novi->sljedeci;
  130. novi->ljubimac = x;
  131. }
  132. }
  133.  
  134. zivotinja RetrieveL(int p, listaPokazivac* lista) {
  135. listaPokazivac *tekuci = lista->sljedeci;
  136. for(int i=0; i<p; i++) tekuci = tekuci->sljedeci;
  137. return tekuci->ljubimac;
  138. }
  139.  
  140. int EndL(listaPokazivac *lista) {
  141. listaPokazivac* tekuci = lista;
  142. int p = 0;
  143. while(tekuci->sljedeci) {
  144. tekuci = tekuci->sljedeci;
  145. p++;
  146. }
  147. return p;
  148. }
  149.  
  150. void DeleteL(int p, listaPokazivac *lista) {
  151. listaPokazivac *brisi = lista->sljedeci,*prethodni=lista;
  152. for(int i=0; i<p; i++) {
  153. prethodni = brisi;
  154. brisi = brisi->sljedeci;
  155. }
  156. prethodni->sljedeci = brisi->sljedeci;
  157. delete brisi;
  158. }
  159.  
  160. int LocateL(char x[], listaPokazivac* lista) {
  161. listaPokazivac *tekuci = lista;
  162. int p=0;
  163. while(tekuci) {
  164. if(tekuci->sljedeci == NULL) return EndL(lista);
  165. if(!strcmp((tekuci->sljedeci)->ljubimac.naziv, x)||!strcmp((tekuci->sljedeci)->ljubimac.vrsta, x)) return p;
  166. tekuci = tekuci->sljedeci;
  167. p++;
  168. }
  169. }
  170.  
  171. int FirstL(listaPokazivac* lista) {
  172. if(lista->sljedeci == NULL) return EndL(lista);
  173. return 0;
  174. }
  175.  
  176. int PreviousL(int p, listaPokazivac* lista) {
  177. if(p == FirstL(lista)) return -1;
  178. return p - 1;
  179. }
  180.  
  181. int NextL(int p,listaPokazivac* lista) {
  182. if(p == EndL(lista)) return -1;
  183. if(p == PreviousL(EndL(lista), lista)) return EndL(lista);
  184. return p + 1;
  185. }
  186.  
  187. void DeleteAll(listaPokazivac* lista) {
  188. listaPokazivac* prethodni = lista, *tekuci = lista->sljedeci;
  189. while(tekuci) {
  190. delete prethodni;
  191. prethodni = tekuci;
  192. tekuci = tekuci->sljedeci;
  193. }
  194. delete prethodni;
  195. lista = NULL;
  196. }
  197.  
  198. void Vrati(zivotinja x, int p, listaPokazivac* lista) {
  199. listaPokazivac* tekuci = lista->sljedeci;
  200. for(int i = 0; i < p; i++) tekuci = tekuci->sljedeci;
  201. tekuci->ljubimac = x;
  202. }

Report this snippet  

You need to login to post a comment.