Posted By

tovrbosic on 10/24/10


Tagged


Versions (?)

Lista_pokazivaci.h


 / Published in: C++
 

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct pacijent{
  5. int matbr;
  6. int dob;
  7. };
  8.  
  9. struct tpacijenti{
  10. pacijent podaci;
  11. tpacijenti *sljedeci;
  12. };
  13.  
  14. void InitL(tpacijenti *lista){
  15. lista->sljedeci=NULL;
  16. }
  17.  
  18. tpacijenti *FirstL(tpacijenti *lista){
  19. return lista->sljedeci;
  20. }
  21.  
  22. tpacijenti *EndL(tpacijenti *lista){
  23. return NULL;
  24. }
  25.  
  26. tpacijenti *NextL(int p, tpacijenti *lista){
  27. tpacijenti *zadnji;
  28. zadnji=lista;
  29. int brojac=0;
  30. while(zadnji->sljedeci){
  31. brojac++;
  32. zadnji=zadnji->sljedeci;
  33. if (brojac==p){
  34. if (zadnji->sljedeci==NULL) return EndL(lista);
  35. else{
  36. return zadnji->sljedeci;
  37. }
  38.  
  39. }
  40. }
  41. }
  42.  
  43. tpacijenti *PreviousL(int p, tpacijenti *lista){
  44. tpacijenti *zadnji, *prethodni;
  45. prethodni=lista;
  46. zadnji=prethodni->sljedeci;
  47. int brojac=2;
  48. if(p==0 || p==1)cout<<"Prethodni ne postoji"<<endl;
  49. else{
  50. while(zadnji->sljedeci){
  51. prethodni=zadnji;
  52. zadnji=zadnji->sljedeci;
  53. prethodni->sljedeci=zadnji;
  54. brojac++;
  55. if(brojac==p){
  56. return prethodni->sljedeci;
  57. }
  58. }
  59. }
  60. }
  61.  
  62. tpacijenti *LocateL(int x, tpacijenti *lista){
  63. tpacijenti *zadnji;
  64. zadnji=lista;
  65. int brojac=1;
  66. while(zadnji->sljedeci){
  67. if(x==brojac) return zadnji->sljedeci;
  68. zadnji=zadnji->sljedeci;
  69. brojac++;
  70. }
  71. return EndL(lista);
  72. }
  73. void InsertL(pacijent x, int p, tpacijenti *lista){
  74. int brojac=0;
  75. tpacijenti *zadnji,*prethodni;
  76. prethodni=lista;
  77. zadnji=prethodni->sljedeci;
  78. while(prethodni->sljedeci){
  79. if(p==brojac){
  80. tpacijenti *novi=new tpacijenti;
  81. novi->podaci.matbr=x.matbr;
  82. novi->podaci.dob=x.dob;
  83. novi->sljedeci=zadnji;
  84. prethodni->sljedeci=novi;
  85. }
  86. prethodni=prethodni->sljedeci;
  87. brojac++;
  88. }
  89. }
  90.  
  91. void unos(pacijent x, tpacijenti *lista){
  92. tpacijenti *zadnji, *novi;
  93. zadnji=lista;
  94. while(zadnji->sljedeci)
  95. zadnji=zadnji->sljedeci;
  96. novi=new tpacijenti;
  97. novi->podaci=x;
  98. zadnji->sljedeci=novi;
  99. novi->sljedeci=NULL;
  100. }
  101.  
  102. void Delete(tpacijenti *lista, int matbr){
  103. tpacijenti *brisi=lista->sljedeci;
  104. tpacijenti *prethodni=lista;
  105. while(brisi){
  106. if(brisi->podaci.matbr==matbr){
  107. prethodni->sljedeci=brisi->sljedeci;
  108. delete brisi;
  109. break;
  110. }
  111. prethodni=brisi;
  112. brisi=brisi->sljedeci;
  113. }
  114. }
  115.  
  116. void DeleteL(int p, tpacijenti *lista){
  117. int brojac=1;
  118. tpacijenti *zadnji,*prethodni, *brisi;
  119. prethodni=lista;
  120. zadnji=prethodni->sljedeci;
  121. while(prethodni->sljedeci){
  122. if(p==brojac){
  123. brisi=prethodni->sljedeci;
  124. prethodni->sljedeci=brisi->sljedeci;
  125. delete brisi;
  126. }
  127. }
  128. }
  129.  
  130. tpacijenti *RetrieveL(int p, tpacijenti *lista){
  131. int brojac=0;
  132. tpacijenti *trenutni;
  133. trenutni=lista;
  134. while(trenutni->sljedeci){
  135. if (p==brojac) return trenutni;
  136. else{
  137. brojac++;
  138. trenutni=trenutni->sljedeci;
  139. }
  140. }
  141. }
  142.  
  143. void DeleteAllL(tpacijenti *lista){
  144. tpacijenti *zadnji, *brisi;
  145. while(lista->sljedeci){
  146. brisi=lista->sljedeci;
  147. zadnji=brisi->sljedeci;
  148. lista->sljedeci=zadnji;
  149. delete brisi;
  150. }
  151. }
  152.  
  153. void sort(tpacijenti *lista){
  154. tpacijenti *prethodni,*tekuci,*sljedeci;
  155. int indikator,brojac=0;
  156. do{
  157. indikator = 0;
  158. tekuci=lista->sljedeci;
  159. prethodni=lista;
  160. while (tekuci->sljedeci){
  161. sljedeci=tekuci->sljedeci;
  162. if (tekuci->podaci.matbr > sljedeci->podaci.matbr){
  163. prethodni->sljedeci=sljedeci;
  164. tekuci->sljedeci=sljedeci->sljedeci;
  165. sljedeci->sljedeci=tekuci;
  166. indikator=1;
  167. }
  168. prethodni=prethodni->sljedeci;
  169. tekuci=prethodni->sljedeci;
  170. }
  171. } while (indikator==1);
  172. }
  173.  
  174. void ispis(tpacijenti *lista){
  175. tpacijenti *zadnji;
  176. zadnji=lista->sljedeci;
  177. while(zadnji){
  178. cout<<"Maticni broj: "<<zadnji->podaci.matbr<<endl;
  179. cout<<"Dob: "<<zadnji->podaci.dob<<endl;
  180. cout<<"------------------"<<endl;
  181. zadnji=zadnji->sljedeci;
  182. }
  183.  
  184. }
  185.  
  186. void ispisgodine(tpacijenti *lista){
  187. int brojac=0;
  188. tpacijenti *zadnji;
  189. zadnji=lista;
  190. while(zadnji){
  191. if (zadnji->podaci.dob<18){
  192. cout << "Maticni broj: "<<zadnji->podaci.matbr<<endl;
  193. cout << "Dob: "<<zadnji->podaci.dob<<endl;
  194. cout << "----------------"<<endl;
  195. brojac++;
  196. }
  197. zadnji=zadnji->sljedeci;
  198. }
  199. cout << "Mladih od 18 ima: "<<brojac<<endl;
  200. }

Report this snippet  

You need to login to post a comment.