Posted By

idurlen1 on 12/11/12


Tagged

data list lista structures pointer podataka pokaziva stuktura


Versions (?)

lista_pokazivac.h


 / Published in: C++
 

zadatak iz SP-a

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. struct podaci{
  6. long sifra;
  7. char naziv[50], vrsta[60];
  8. float cijena;
  9. int dan, mj, god;
  10. podaci *pret, *slj;
  11. };// struct
  12.  
  13. podaci *Lista;
  14.  
  15. void InitL(){
  16. Lista = new podaci;
  17. Lista->pret = NULL;
  18. Lista->slj = NULL;
  19. }
  20.  
  21. int FirstL(){
  22. if (Lista->slj)
  23. return 0;
  24. }// FirstL();
  25.  
  26. int LastL(){
  27. if (Lista->slj == 0)
  28. return 0;
  29.  
  30. podaci *zadnji;
  31. zadnji = Lista;
  32. int i = 0;
  33.  
  34. while(zadnji->slj){
  35. zadnji = zadnji->slj;
  36. i++;
  37. }
  38. return i;
  39. }//LastL();
  40.  
  41. int LocateL1(char naziv[]){
  42. int i, j;
  43. i = 0;
  44. bool nadjeno = false;
  45. podaci *element = Lista;
  46.  
  47. while(element->slj){
  48. if (strcmp(element->naziv, naziv) == 0){
  49. nadjeno = true;
  50. break;
  51. }
  52. element = element->slj;
  53. i++;
  54. }
  55.  
  56. if (nadjeno)
  57. return i;
  58. else
  59. return -1;
  60. }// LocateL1();
  61.  
  62. int LocateL2(char naziv[]){
  63. int i, j;
  64. i = 0;
  65. bool nadjeno = false;
  66. podaci *element = Lista;
  67.  
  68. while(element->slj){
  69. if (strcmp(element->vrsta, naziv) == 0){
  70. nadjeno = true;
  71. break;
  72. }
  73. element = element->slj;
  74. i++;
  75. }
  76.  
  77. if (nadjeno)
  78. return i;
  79. else
  80. return -1;
  81. }// LocateL2();
  82.  
  83. int InsertL(int pozicija, podaci P){
  84. podaci *zadnji, *novi;
  85. zadnji = Lista;
  86.  
  87. while(zadnji->slj)
  88. zadnji = zadnji->slj;
  89.  
  90. novi = new podaci;
  91. novi->pret = zadnji;
  92. novi->slj = NULL;
  93. zadnji->slj = novi;
  94.  
  95. strcpy(zadnji->naziv, P.naziv);
  96. zadnji->sifra = P.sifra;
  97. strcpy(zadnji->vrsta, P.vrsta);
  98. zadnji->cijena = P.cijena;
  99. zadnji->dan = P.dan;
  100. zadnji->mj = P.mj;
  101. zadnji->god = P.god;
  102. return 0;
  103. }// InsertL();
  104.  
  105. int DeleteL1(char naziv[]){
  106. podaci *prethodni, *element, *sljedeci;
  107. element = Lista->slj;
  108. bool nadjen = false;
  109. if (LocateL1(naziv) == -1)
  110. return 0;
  111.  
  112. if(LocateL1( naziv) == 0){
  113. if(element->slj){
  114. sljedeci = element->slj;
  115. prethodni = element->pret;
  116. sljedeci->pret = prethodni;
  117. prethodni->slj = sljedeci;
  118. delete element;
  119. }
  120. else{
  121. Lista->slj = NULL;
  122. delete element;
  123. }
  124. nadjen = true;
  125. }
  126. else{
  127. while(element){
  128. if (strcmp(element->naziv, naziv) == 0){
  129. sljedeci = element->slj;
  130. prethodni = element->pret;
  131. sljedeci->pret = prethodni;
  132. prethodni->slj = sljedeci;
  133. delete element;
  134. nadjen = true;
  135. break;
  136. }
  137. else
  138. element = element->slj;
  139. }
  140. }
  141. if(nadjen)
  142. return 1;
  143. else
  144. return 0;
  145. }// DeleteL1();
  146.  
  147. int DeleteL2(char naziv[]){
  148. podaci *prethodni, *element, *sljedeci;
  149. element = Lista->slj;
  150. bool nadjen = false;
  151.  
  152. if (LocateL2(naziv) == -1)
  153. return 0;
  154.  
  155. if(LocateL2( naziv) == 0){
  156. if(element->slj){
  157. sljedeci = element->slj;
  158. sljedeci->pret = Lista;
  159. Lista->slj = sljedeci;
  160. delete element;
  161. }
  162. else{
  163. Lista->slj = NULL;
  164. delete element;
  165. }
  166. nadjen = true;
  167. }
  168.  
  169. while(element){
  170. if (strcmp(element->vrsta, naziv) == 0){
  171. prethodni = element->pret;
  172. sljedeci = element->slj;
  173.  
  174. sljedeci->pret = prethodni;
  175. prethodni->slj = sljedeci;
  176. delete element;
  177. nadjen = true;
  178. break;
  179. }
  180. else
  181. element = element->slj;
  182. }
  183. if(nadjen)
  184. return 1;
  185. else
  186. return 0;
  187. }// DeleteL2();
  188.  
  189. podaci RetreiveL(int indeks){
  190. podaci *element;
  191. element = Lista;
  192. podaci pod;
  193. for (int i = 0; i<indeks; i++)
  194. element = element->slj;
  195.  
  196. strcpy(pod.naziv, element->naziv);
  197. pod.sifra = element->sifra;
  198. strcpy(pod.vrsta, element->vrsta);
  199. pod.cijena = element->cijena;
  200. pod.dan = element->dan;
  201. pod.mj = element->mj;
  202. pod.god = element->god;
  203. return pod;
  204. }// RetreiveL();

Report this snippet  

You need to login to post a comment.