Posted By

dpavlovi on 11/11/12


Tagged

list lista ATPADT


Versions (?)

lista_polje.h


 / Published in: C++
 

Struktura headera lista_polje.h , za implementaciju liste putem polja.

  1. typedef int elem;
  2. struct podaci{
  3. int sifra,datum[3];
  4. float cijena;
  5. char naziv[50],vrsta[50];
  6. };
  7. struct lista_unos{
  8. podaci value[1000];
  9. int kursor;
  10. };
  11. typedef lista_unos lista;
  12. elem EndL(lista *polje){
  13. return polje->kursor;
  14. }
  15. elem FirstL(lista *polje){
  16. if(polje->kursor==0)
  17. return EndL(polje);
  18. else
  19. return 0;
  20. }
  21. lista *InitL(lista *polje){
  22. polje=new lista;
  23. polje->kursor=0;
  24. return polje;
  25. }
  26. elem InsertL(podaci x,elem poz,lista *polje){
  27. if(poz<0 || poz>polje->kursor)
  28. return 0;
  29. else{
  30. int krs=polje->kursor;
  31. for(int i=krs-1;i>=poz;i--)
  32. polje->value[i+1]=polje->value[i];
  33. polje->value[poz]=x;
  34. polje->kursor++;
  35. return 1;
  36. }
  37. }
  38. podaci RetrieveL(elem poz, lista *b){
  39. return b->value[poz];
  40. }
  41. elem DeleteL(elem poz, lista *b){
  42. if(b->kursor==0)
  43. return 0;
  44. if(poz<0 || poz>=b->kursor)
  45. return 0;
  46. if(poz==EndL(b))
  47. return 0;
  48. if(poz==FirstL(b)){
  49. b->kursor--;
  50. for(int i=poz;i<b->kursor;i++)
  51. b->value[i]=b->value[i+1];
  52. return 1;
  53. }
  54. else{
  55. b->kursor--;
  56. for(int i=poz;i<b->kursor;i++)
  57. b->value[i]=b->value[i+1];
  58. return 1;
  59. }
  60. }
  61. elem PreviousL(elem poz, lista *b){
  62. if(poz==FirstL(b))
  63. return -1;
  64. if(poz==EndL(b))
  65. return poz-1;
  66. else
  67. return poz-1;
  68. }
  69. elem LocateL(podaci x, lista *b){
  70. elem poz=PreviousL(EndL(b),b);
  71. if(x.cijena==1)
  72. if(FirstL(b)!=EndL(b))
  73. while(false==(!true)){
  74. podaci tren=RetrieveL(poz,b);
  75. if(strcmp(x.naziv,tren.naziv)==0)
  76. return poz;
  77. if(poz==FirstL(b))
  78. break;
  79. poz=PreviousL(poz,b);
  80. }
  81. if(x.cijena==2)
  82. if(FirstL(b)!=EndL(b))
  83. while(false==(!true)){
  84. podaci tren=RetrieveL(poz,b);
  85. if(strcmp(x.vrsta,tren.vrsta)==0)
  86. return poz;
  87. if(poz==FirstL(b))
  88. break;
  89. poz=PreviousL(poz,b);
  90. }
  91. return EndL(b);
  92. }
  93. elem NextL(elem poz, lista *b){
  94. if(poz==EndL(b)-1)
  95. return EndL(b);
  96. if(poz==EndL(b))
  97. return 0;
  98. else
  99. return poz+1;
  100. }
  101. elem DeleteAllL(lista *b){
  102. return b->kursor==0;
  103. }

Report this snippet  

You need to login to post a comment.