Posted By

mhudince on 11/10/12


Tagged

merge mario pokazivaci c++ zivotinje sortiranje zaglavlja hudincec


Versions (?)

Strukture_podataka_zad_1 (lista_pokazivac.h)


 / Published in: C++
 

URL: mhudince3

zadatak za SP

  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) // if (position && 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 *zadnji;
  62. //zadnji = L;
  63. LIST *novi = new LIST;
  64. novi->ziv.sifra = z.sifra;
  65. novi->ziv.d = z.d;
  66. novi->ziv.m = z.m;
  67. novi->ziv.cijena = z.cijena;
  68. novi->ziv.g = z.g;
  69.  
  70. strcpy (novi->ziv.vrsta, z.vrsta);
  71. strcpy (novi->ziv.naziv, z.naziv);
  72. /**
  73.   int br=0;
  74.   while(br < int(position)) {
  75.   zadnji=zadnji->sljedeci;
  76.   br++;
  77.   }
  78.   **/
  79. if (position->sljedeci){
  80. novi->sljedeci = position->sljedeci;
  81. //zadnji->sljedeci = novi;
  82. }
  83. else {
  84. novi->sljedeci = NULL;
  85. position->sljedeci = novi;
  86. }
  87. }
  88. else
  89. return 0;
  90. };
  91.  
  92. element DELETEL (element position, LIST *L) {
  93. if (position && position->sljedeci) {
  94. LIST *pom = position->sljedeci;
  95. position->sljedeci = position->sljedeci->sljedeci;
  96. delete pom;
  97. }
  98. else
  99. return 0;
  100. };
  101.  
  102. zivotinje RETRIEVEL (element position, LIST *L) {
  103. zivotinje ziv;
  104. if (position && position->sljedeci) {
  105. ziv.sifra = position->sljedeci->ziv.sifra;
  106. ziv.cijena = position->sljedeci->ziv.cijena;
  107. ziv.d = position->sljedeci->ziv.d;
  108. ziv.m = position->sljedeci->ziv.m;
  109. ziv.g = position->sljedeci->ziv.g;
  110.  
  111. strcpy (ziv.vrsta, position->sljedeci->ziv.vrsta);
  112. strcpy (ziv.naziv, position->sljedeci->ziv.naziv);
  113. return ziv;
  114. }
  115. };
  116.  
  117. void DELETEALLL (LIST *L) {
  118. LIST *prvi = L->sljedeci, *tekuci;
  119. while (prvi) {
  120. tekuci = prvi;
  121. prvi = prvi->sljedeci;
  122. delete tekuci;
  123. }
  124. };
  125.  
  126. LIST* INITL (LIST *L) {
  127. L = new LIST;
  128. L->sljedeci = NULL;
  129. return L;
  130. };

Report this snippet  

You need to login to post a comment.