Posted By

tsteyska on 11/12/12


Tagged

Liste lista sp Strukture podataka implementacija ATP evidencija zivotinja


Versions (?)

Z1_lista_pokazivaci.h


 / Published in: C++
 

Implementacija liste pomocu pokazivaca

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

Report this snippet  

You need to login to post a comment.