Posted By

gdanz on 11/12/12


Tagged

Shop sp pokazivac Strukture podataka pokazivaci zivotinje zoo


Versions (?)

Z1_pokazivac.h


 / Published in: C++
 

implementacija liste pomocu pokazivaca za 1. zadatak iz kolegija Strukture podataka 2012/2013

  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. struct zivotinje{
  7. int sifra, datum;
  8. char vrsta[20], naziv[30];
  9. float cijena;
  10. };
  11.  
  12. struct tLista{
  13. zivotinje zivotinja;
  14. tLista *sljedeci;
  15. };
  16.  
  17. typedef tLista *element;
  18.  
  19. element EndL(tLista *L){
  20. tLista *tekuci = L;
  21. while(tekuci -> sljedeci)
  22. tekuci = tekuci->sljedeci;
  23. return tekuci;
  24. }
  25.  
  26. element FirstL(tLista *L){
  27. return L -> sljedeci;
  28. }
  29.  
  30. element NextL(element p, tLista *L){
  31. if(p -> sljedeci == NULL)
  32. return EndL(L);
  33. return p -> sljedeci;
  34. };
  35.  
  36. element PreviousL(element p, tLista *L){
  37. tLista *tekuci = L -> sljedeci;
  38. while(p != tekuci -> sljedeci && tekuci -> sljedeci!= NULL)
  39. tekuci = tekuci-> sljedeci;
  40. return tekuci;
  41. };
  42.  
  43. element LocateL(zivotinje x, tLista *L){
  44. element tekuci;
  45. tekuci = L -> sljedeci;
  46. while(tekuci){
  47. if(x.naziv !=0){
  48. //if (tekuci == EndL(L)) return EndL(L);
  49. if(strcmp(x.naziv, tekuci -> zivotinja.naziv) == 0)
  50. return tekuci;
  51. }
  52. if(x.vrsta !=0){
  53. if(strcmp(x.vrsta, tekuci -> zivotinja.vrsta) == 0)
  54. return tekuci;
  55. }
  56. tekuci = tekuci->sljedeci;
  57. }
  58. return EndL(L);
  59. };
  60.  
  61. int InsertL(zivotinje x, tLista *p, tLista *L){
  62. tLista *tekuci = p;
  63. tLista *novi = new tLista;
  64.  
  65. if(p == EndL(L)){
  66. novi -> sljedeci = NULL;
  67. tekuci -> sljedeci = novi;
  68. tekuci -> zivotinja = x;
  69. }
  70. else if(p == FirstL(L)){
  71. novi -> sljedeci = tekuci;
  72. L -> sljedeci = novi;
  73. novi -> zivotinja = x;
  74. }
  75. else{
  76. tLista *prethodni = PreviousL(p,L);
  77. novi -> sljedeci = tekuci;
  78. prethodni -> sljedeci = novi;
  79. novi -> zivotinja = x;
  80. }
  81. if(tekuci -> zivotinja.sifra == x.sifra)
  82. return 1;
  83. else
  84. return 0;
  85. };
  86.  
  87. int DeleteL(element p, tLista *L){
  88. element prethodni, tekuci;
  89. tekuci = p;
  90. if(p == FirstL(L)){
  91. L -> sljedeci = tekuci -> sljedeci;
  92. delete tekuci;
  93. return 1;
  94. }
  95. else{
  96. prethodni = PreviousL(tekuci,L);
  97. prethodni -> sljedeci = tekuci -> sljedeci;
  98. delete tekuci;
  99. return 1;
  100. }
  101. return 0;
  102. };
  103.  
  104. zivotinje RetrieveL(element p, tLista *L){
  105. return p -> zivotinja;
  106. };
  107.  
  108. void DeleteAllL(tLista *L){
  109.  
  110. tLista *brisi = L;
  111. while(L -> sljedeci != NULL)
  112. {
  113. brisi= L ->sljedeci;
  114. L -> sljedeci=brisi->sljedeci;
  115. delete brisi;
  116. }
  117. }
  118.  
  119. tLista* InitL(tLista *L){
  120. L = new tLista;
  121. tLista *zadnji = new tLista;
  122. L -> sljedeci = zadnji;
  123. zadnji -> sljedeci = NULL;
  124. return L;
  125. };

Report this snippet  

You need to login to post a comment.