Posted By

dsokac1992 on 11/13/12


Tagged


Versions (?)

biblioteka lista_polje.h


 / Published in: C++
 

Implementacija liste pomoću polja

  1. #include <iostream>
  2. using namespace std;
  3. struct date{
  4. int dan;
  5. int mjesec;
  6. int godina;
  7. } datum;
  8.  
  9. struct clan{
  10. int sifra;
  11. char vrsta[50];
  12. char naziv[50];
  13. float cijena;
  14. date datum;
  15. };
  16.  
  17. struct lista{
  18. clan zivotinja[10000];
  19. int sljedeci;
  20. };
  21. typedef int pokazivac;
  22.  
  23. pokazivac DeleteAllL(lista *element){
  24. element->sljedeci = 0;
  25. return element->sljedeci;
  26. }
  27. pokazivac EndL(lista *element){
  28. return element->sljedeci;
  29. }
  30.  
  31. pokazivac FirstL(lista *element){
  32. if(element->sljedeci == 0) EndL(element);
  33. else return 0;
  34. }
  35.  
  36.  
  37.  
  38. pokazivac PreviousL(pokazivac a, lista *element){
  39. if(a!=FirstL(element)) return --a;
  40. else{
  41. if(a==FirstL(element)) {cout << "Funkcija je nedefinirana!"; exit(0);}
  42. if(a==EndL(element)) EndL(element);
  43. }
  44. }
  45.  
  46. pokazivac NextL(pokazivac a, lista *element){
  47. if(a == PreviousL(EndL(element),element)) EndL(element);
  48. else return ++a;
  49. }
  50.  
  51.  
  52. pokazivac LocateL(clan target, lista *element){
  53. for(int i=0; i<EndL(element);i++){
  54. if(target.datum.dan!=0){
  55.  
  56. if(target.datum.godina==element->zivotinja[i].datum.godina &&
  57. target.datum.mjesec == element->zivotinja[i].datum.mjesec &&
  58. target.datum.dan == element->zivotinja[i].datum.dan)
  59. return i;
  60. }
  61. if(strlen(target.naziv)){
  62.  
  63. if(strcmp(target.naziv, element->zivotinja[i].naziv)==0)
  64. return i;
  65. }
  66. if(strlen(target.vrsta)){
  67.  
  68. if(strcmp(target.vrsta, element->zivotinja[i].vrsta)==0)
  69. return i;
  70. }
  71. }
  72. return EndL(element);
  73. }
  74.  
  75.  
  76. bool InsertL(clan novi, pokazivac a, lista *element){
  77. if(a==EndL(element)){
  78. element->zivotinja[a] = novi;
  79. element->sljedeci++;
  80. }
  81. else{
  82. for(int j=EndL(element);j>=a;j--)
  83. element->zivotinja[j]=element->zivotinja[j-1];
  84. element->zivotinja[a] = novi;
  85. element->sljedeci++;
  86. }
  87. if(element->zivotinja[a].sifra==novi.sifra) return 1;
  88. else return 0;
  89. }
  90.  
  91. bool DeleteL(pokazivac a, lista *element){
  92. if(element->sljedeci==0) return false;
  93. else{
  94. while(a<EndL(element)){
  95. element->zivotinja[a] = element->zivotinja[a+1];
  96. a++;
  97. }
  98. element->sljedeci--;
  99. return true;
  100. }
  101. return false;
  102. }
  103. clan RetrieveL(pokazivac a, lista *element){
  104. return element->zivotinja[a];
  105. }
  106. lista *InitL(lista *element){
  107. element->sljedeci = 0;
  108. }

Report this snippet  

You need to login to post a comment.