Posted By

NikolaSmrek on 11/12/12


Tagged

lista pokazivac Strukture ATP


Versions (?)

Lista_pokazivac.h


 / Published in: C++
 

Header koji nam služi za realizaciju implementacije liste preko pokazivača!

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. struct Tblag{
  6. unsigned short sifra;
  7. char vrsta[20];
  8. char naziv[30];
  9. float cijena;
  10. unsigned short dan,mjesec,godina;
  11. };
  12.  
  13. struct zivotinje{
  14. Tblag zivina;
  15. zivotinje *pok_next;
  16. };
  17.  
  18.  
  19. zivotinje *lista=new zivotinje;
  20. typedef zivotinje *pomoc;
  21. int brojac_mista_polje;
  22.  
  23. zivotinje *FirstL(zivotinje *lista){
  24. return lista->pok_next;
  25. }
  26.  
  27. zivotinje *EndL(zivotinje *lista){
  28. zivotinje *zadnji=lista;
  29. while(zadnji->pok_next)zadnji=zadnji->pok_next;
  30. return zadnji->pok_next;
  31. }
  32.  
  33. zivotinje *NextL(zivotinje *pozicija,zivotinje *lista){
  34. return pozicija->pok_next;
  35. }
  36.  
  37. zivotinje *PreviousL(zivotinje *pozicija,zivotinje *lista){
  38. zivotinje *tekuci=lista;
  39. while(tekuci->pok_next!=pozicija){
  40. tekuci=tekuci->pok_next; }
  41. return tekuci;
  42. }
  43.  
  44. void InsertL(Tblag x,zivotinje *pozicija, zivotinje *lista){
  45. zivotinje *novi=new zivotinje;
  46. pozicija=PreviousL(pozicija,lista);
  47. novi->zivina=x;
  48. novi->pok_next=pozicija->pok_next;
  49. pozicija->pok_next=novi;
  50. }
  51.  
  52. zivotinje *LocateL(int b,Tblag x,zivotinje *lista){
  53. zivotinje *tekuci=lista->pok_next;
  54. if(b==0)tekuci=lista->pok_next;
  55. int a=0;
  56.  
  57.  
  58. while(tekuci){
  59. while(a!=b){a++;tekuci=tekuci->pok_next;}
  60. if((strcmp(x.naziv,tekuci->zivina.naziv))==0)return tekuci;
  61. b++;
  62. tekuci=tekuci->pok_next;
  63. }//kraj while
  64. return EndL(lista);
  65. }//kraj locate s tri argumenta
  66.  
  67. zivotinje *LocateL(Tblag x,zivotinje *lista){
  68. zivotinje *tekuci=lista->pok_next;
  69. while(tekuci){
  70. if(strcmp(x.vrsta,tekuci->zivina.vrsta)==0)return tekuci;
  71. tekuci=tekuci->pok_next;
  72. }//kraj while
  73. return EndL(lista);
  74. }
  75.  
  76. void LocateL_brojac(int b,Tblag x,zivotinje *lista){
  77. brojac_mista_polje=-1;
  78. zivotinje *tekuci=lista->pok_next;
  79. while(tekuci){
  80. if((strcmp(x.naziv,tekuci->zivina.naziv)==0)|| (strcmp(x.vrsta,tekuci->zivina.vrsta)==0)) brojac_mista_polje++;
  81. tekuci=tekuci->pok_next;
  82. }
  83. }//kraj locate s tri argumenta za prebrojavanje
  84.  
  85. Tblag RetriveL(zivotinje *pozicija,zivotinje *lista){
  86. return pozicija->zivina;
  87. }
  88.  
  89. void *DeleteL(zivotinje *pozicija,zivotinje *lista){
  90. pozicija=PreviousL(pozicija,lista);
  91. zivotinje *tekuci=pozicija->pok_next;
  92. pozicija->pok_next=tekuci->pok_next;
  93. delete tekuci;
  94.  
  95. }//kraj deletea
  96.  
  97. void *DeleteALL(zivotinje *lista){
  98. while(lista->pok_next){
  99. zivotinje *tekuci=lista->pok_next;
  100. lista->pok_next=tekuci->pok_next;
  101. delete tekuci;
  102. }//kraj while
  103. delete lista;
  104. }
  105.  
  106. void *InitL(zivotinje *lista){
  107. lista->pok_next=NULL;
  108. }
  109.  
  110. zivotinje *InitL_MS(zivotinje *lista){
  111. lista=NULL;
  112. if(lista!=NULL)
  113. DeleteALL(lista);
  114. else{
  115. zivotinje *newList = new zivotinje;
  116. newList->pok_next = NULL;
  117. return newList;
  118. }
  119. return NULL;
  120. }//kraj

Report this snippet  

You need to login to post a comment.