Posted By

frafajec on 11/11/12


Tagged

1 Strukture podataka zadatak


Versions (?)

lista_pokazivaci.h


 / Published in: C++
 

Datoteka zaglavlja gdje je ATP lista implementirana pomocu pokazivaca

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

Report this snippet  

You need to login to post a comment.