Posted By

ipokec93 on 11/11/12


Tagged

Strukture podataka z1


Versions (?)

Z1_lista_pokazivac.h


 / Published in: C++
 

Implementacija liste pomoću pokazivača

  1. #include <cstring>
  2.  
  3. struct zivotinje {
  4. int sifra, cijena, d, m, g;
  5. char naziv [20], vrsta [30];
  6. };
  7.  
  8.  
  9. struct LIST {
  10. zivotinje ziv;
  11. LIST *sljedeci;
  12. };
  13.  
  14. typedef LIST *element;
  15.  
  16.  
  17. element endL(LIST* L) {
  18. LIST *tekuci = L;
  19. while (tekuci->sljedeci)
  20. tekuci = tekuci->sljedeci;
  21. return tekuci;
  22. };
  23.  
  24. element firstL (LIST *L) {
  25. if (L->sljedeci)
  26. return L;
  27. else
  28. return endL(L);
  29. };
  30.  
  31. element nextL (element position, LIST *L) {
  32. if (position->sljedeci)
  33. return position->sljedeci;
  34. else
  35. return endL(L);
  36. };
  37.  
  38. element previousL (element position, LIST *L){
  39. if (position == L)
  40. return 0;
  41. LIST *tekuci = L;
  42. while (tekuci->sljedeci) {
  43. if (tekuci->sljedeci == position)
  44. return tekuci;
  45. tekuci = tekuci->sljedeci;
  46. }
  47. };
  48.  
  49. element locateL (zivotinje z, LIST *L) {
  50. LIST *tekuci = L;
  51. while (tekuci) {
  52. if (tekuci->sljedeci && tekuci->sljedeci->ziv.naziv == z.naziv)
  53. return tekuci;
  54. tekuci = tekuci->sljedeci;
  55. }
  56. return endL(L);
  57. };
  58.  
  59. element insertL (zivotinje z, element position, LIST *L) {
  60. if (position) {
  61. LIST *novi = new LIST;
  62. novi->ziv.sifra = z.sifra;
  63. novi->ziv.d = z.d;
  64. novi->ziv.m = z.m;
  65. novi->ziv.cijena = z.cijena;
  66. novi->ziv.g = z.g;
  67.  
  68. strcpy (novi->ziv.vrsta, z.vrsta);
  69. strcpy (novi->ziv.naziv, z.naziv);
  70.  
  71. if (position->sljedeci){
  72. novi->sljedeci = position->sljedeci;
  73. }
  74. else {
  75. novi->sljedeci = NULL;
  76. position->sljedeci = novi;
  77. }
  78. }
  79. else
  80. return 0;
  81. };
  82.  
  83. element deleteL (element position, LIST *L) {
  84. if (position && position->sljedeci) {
  85. LIST *pom = position->sljedeci;
  86. position->sljedeci = position->sljedeci->sljedeci;
  87. delete pom;
  88. }
  89. else
  90. return 0;
  91. };
  92.  
  93. zivotinje retrieveL (element position, LIST *L) {
  94. zivotinje ziv;
  95. if (position && position->sljedeci) {
  96. ziv.sifra = position->sljedeci->ziv.sifra;
  97. ziv.cijena = position->sljedeci->ziv.cijena;
  98. ziv.d = position->sljedeci->ziv.d;
  99. ziv.m = position->sljedeci->ziv.m;
  100. ziv.g = position->sljedeci->ziv.g;
  101.  
  102. strcpy (ziv.vrsta, position->sljedeci->ziv.vrsta);
  103. strcpy (ziv.naziv, position->sljedeci->ziv.naziv);
  104. return ziv;
  105. }
  106. };
  107.  
  108. void deleteallL (LIST *L) {
  109. LIST *prvi = L->sljedeci, *tekuci;
  110. while (prvi) {
  111. tekuci = prvi;
  112. prvi = prvi->sljedeci;
  113. delete tekuci;
  114. }
  115. };
  116.  
  117. LIST* initL (LIST *L) {
  118. L = new LIST;
  119. L->sljedeci = NULL;
  120. return L;
  121. };

Report this snippet  

You need to login to post a comment.