Posted By

alepk on 11/01/10


Tagged

lista pokazivaci


Versions (?)

biblioteka_pokazivaci_alpek


 / Published in: C++
 

Biblioteka - implementacija liste pomoću pokazivaca

  1. #include <iostream>
  2. using namespace std;
  3. struct pacijent{
  4. int matbr;
  5. int dob;
  6. char preime[30];
  7. char povijest[200];};
  8.  
  9. struct tpacijenti{
  10. pacijent lovro;
  11. tpacijenti *sljedeci;};
  12.  
  13.  
  14. void InitL(tpacijenti *lista){lista->sljedeci=NULL;}
  15. tpacijenti *FirstL(tpacijenti *lista){return lista->sljedeci;}
  16. tpacijenti *EndL(tpacijenti *lista){return NULL;}
  17. tpacijenti *NextL(int p, tpacijenti *lista){
  18. tpacijenti *zadnji;
  19. zadnji=lista;
  20. int brojac=0;
  21. while(zadnji->sljedeci){
  22. brojac++;
  23. zadnji=zadnji->sljedeci;
  24. if (brojac==p){
  25. if (zadnji->sljedeci==NULL) return EndL(lista);
  26. else{return zadnji->sljedeci;}}}}
  27.  
  28. tpacijenti *PreviousL(int p, tpacijenti *lista){
  29. tpacijenti *zadnji, *prethodni;
  30. prethodni=lista;
  31. zadnji=prethodni->sljedeci;
  32. int brojac=2;
  33. if(p==1 || p==0)cout<<"Ne postoji element!"<<endl;
  34. else{
  35. while(zadnji->sljedeci){
  36. prethodni=zadnji;
  37. zadnji=zadnji->sljedeci;
  38. prethodni->sljedeci=zadnji;
  39. brojac++;
  40. if(brojac==p){
  41. return prethodni->sljedeci;}}}}
  42. tpacijenti *LocateL(int A, tpacijenti *lista){
  43. tpacijenti *zadnji;
  44. zadnji=lista;
  45. int brojac=1;
  46. while(zadnji->sljedeci){
  47. if(A==brojac) return zadnji->sljedeci;
  48. zadnji=zadnji->sljedeci;
  49. brojac++;
  50. }
  51. return EndL(lista);}
  52.  
  53.  
  54.  
  55.  
  56. void Insert(pacijent x, tpacijenti *lista){
  57. tpacijenti *zadnji, *novi;
  58. zadnji=lista;
  59. while(zadnji->sljedeci)
  60. zadnji=zadnji->sljedeci;
  61. novi=new tpacijenti;
  62. novi->lovro=x;
  63. zadnji->sljedeci=novi;
  64. novi->sljedeci=NULL;}
  65.  
  66.  
  67. void Delete(tpacijenti *lista, int matbr){
  68. tpacijenti *brisi=lista->sljedeci;
  69. tpacijenti *prethodni=lista;
  70. bool brisao = false;
  71. while(brisi){
  72. if(brisi->lovro.matbr==matbr){
  73. prethodni->sljedeci=brisi->sljedeci;
  74. delete brisi;
  75. brisao=true;
  76. cout << "Pacijent je izbrisan iz evidencije!" << endl;
  77. break;}
  78.  
  79. prethodni=brisi;
  80. brisi=brisi->sljedeci;}
  81. if(!brisao){cout << "Nepostojeci pacijent!" << endl;}
  82. }
  83.  
  84.  
  85. int sort(tpacijenti *lista){
  86.  
  87. tpacijenti *prethodni,*tekuci,*sljedeci;
  88. int brojac=0;
  89. int indikator;
  90. do{
  91. indikator = 0;
  92. tekuci=lista->sljedeci;
  93. prethodni=lista;
  94. if(lista->sljedeci==NULL) {cout << "Lista je prazna!" << endl;
  95. return 0;}
  96. while (tekuci->sljedeci){
  97. sljedeci=tekuci->sljedeci;
  98. if (tekuci->lovro.matbr > sljedeci->lovro.matbr){
  99. prethodni->sljedeci=sljedeci;
  100. tekuci->sljedeci=sljedeci->sljedeci;
  101. sljedeci->sljedeci=tekuci;
  102. indikator=1;
  103. }
  104. prethodni=prethodni->sljedeci;
  105. tekuci=prethodni->sljedeci;
  106. }
  107. } while (indikator==1);
  108. return 1;}
  109.  
  110.  
  111. int ispis(tpacijenti *lista){
  112. tpacijenti *zadnji;
  113. zadnji=lista->sljedeci;
  114. if(lista->sljedeci==NULL) {cout << "" << endl;
  115. return 0;}
  116. cout << "Sortirano prema maticnom broju uzlazno: " << endl;
  117. cout << "----------------------------------------" << endl;
  118. while(zadnji){
  119. cout<<"Maticni broj: "<<zadnji->lovro.matbr<<endl;
  120. cout<<"Ime i prezime: "<<zadnji->lovro.preime<<endl;
  121. cout<<"Dob: "<<zadnji->lovro.dob<<endl;
  122. cout<<"Povijest bolesti: " << zadnji->lovro.povijest << endl;
  123. cout<<"-----------------------------------------"<<endl;
  124. zadnji=zadnji->sljedeci;}
  125. return 1;}
  126.  
  127.  
  128. void mladji(tpacijenti *lista){
  129. int brojac=0;
  130. tpacijenti *zadnji;
  131. zadnji=lista;
  132. while(zadnji){
  133. if (zadnji->lovro.dob<18){
  134. cout << "Maticni broj: "<<zadnji->lovro.matbr<<endl;
  135. cout << "Ime i prezime: "<<zadnji->lovro.preime<< endl;
  136. cout << "Dob: "<<zadnji->lovro.dob<<endl;
  137. cout << "Povijest bolesti: " <<zadnji->lovro.povijest << endl;
  138. cout << "----------------"<<endl;
  139. brojac++;
  140. }
  141. zadnji=zadnji->sljedeci;} cout << "U evidenciji se nalazi "<<brojac<< " mladjih od 18 godina." << endl;}

Report this snippet  

You need to login to post a comment.