Posted By

dario_kovacic on 11/13/12


Tagged


Versions (?)

lista_pokazivac.h


 / Published in: C++
 

biblioteka sadrži implementaciju liste pomoću pokazivača (strukture podataka, zadtak 1)

  1. #include <iostream>
  2. struct zivotinja{
  3. int sifra;
  4. char vrsta[50];
  5. char naziv[50];
  6. struct {
  7. int d,m,g;
  8. }datum;
  9. float cijena;
  10. };
  11.  
  12.  
  13.  
  14. struct lista{
  15. zivotinja z;
  16. lista *sljedeci;
  17. };
  18.  
  19. typedef lista *elem;
  20.  
  21.  
  22. lista* InitL(lista *l){
  23. l = new lista;
  24. lista *zadnji = new lista;
  25. l->sljedeci = zadnji;
  26. zadnji->sljedeci = NULL;
  27. return l;
  28. }
  29. elem EndL(lista *l){
  30. lista *tekuci= l;
  31. while(tekuci->sljedeci)
  32. tekuci=tekuci->sljedeci;
  33. return tekuci;
  34. }
  35. elem FirstL(lista *l){
  36. if(l == NULL) return EndL(l);
  37. else return l->sljedeci;
  38. }
  39.  
  40.  
  41.  
  42. elem NextL(elem p, lista *l){
  43. if(p->sljedeci==NULL) return EndL(l);
  44. return p->sljedeci;
  45. }
  46.  
  47.  
  48.  
  49. elem PreviousL(elem p, lista *l){
  50. lista *tekuci = l->sljedeci;
  51. while(p != tekuci->sljedeci && tekuci->sljedeci!=NULL)
  52. tekuci=tekuci->sljedeci;
  53. return tekuci;
  54. }
  55.  
  56. elem DeleteAllL(lista *l){
  57. l->sljedeci = EndL(l);
  58. }
  59.  
  60. int InsertL(zivotinja ziv, lista *p, lista *l){
  61. lista *tekuci=p;
  62. lista *novi=new lista;
  63.  
  64. if(p==EndL(l)){
  65. novi->sljedeci=NULL;
  66. tekuci->sljedeci=novi;
  67. tekuci->z=ziv;
  68. }
  69. else if(p==FirstL(l)){
  70. novi->sljedeci=tekuci;
  71. l->sljedeci=novi;
  72. novi->z=ziv;
  73. }
  74. else{
  75. lista *prethodni=PreviousL(p,l);
  76. novi->sljedeci=tekuci;
  77. prethodni->sljedeci=novi;
  78. novi->z=ziv;
  79. }
  80. if(tekuci->z.sifra==ziv.sifra)
  81. return 1;
  82. else
  83. return 0;
  84. }
  85.  
  86.  
  87. int DeleteL(elem p, lista *l){
  88. elem prethodni, tekuci;
  89. tekuci = p;
  90. if(p==FirstL(l)){
  91. l->sljedeci = tekuci->sljedeci;
  92. delete tekuci;
  93. return 1;
  94. }
  95. else{
  96. prethodni = PreviousL(tekuci,l);
  97. prethodni->sljedeci = tekuci->sljedeci;
  98. delete tekuci;
  99. return 1;
  100. }
  101. return 0;
  102. }
  103.  
  104.  
  105. elem LocateL(zivotinja ziv, lista *l){
  106. elem tekuci;
  107. tekuci = l->sljedeci;
  108. while(tekuci){
  109.  
  110. if(ziv.sifra!=0){
  111. if(ziv.sifra == tekuci->z.sifra)
  112. return tekuci;
  113. }
  114.  
  115. tekuci = tekuci->sljedeci;
  116. }
  117. }
  118.  
  119. zivotinja RetrieveL(elem p, lista *l){
  120. return p->z;
  121. }

Report this snippet  

You need to login to post a comment.