Posted By

nikym23 on 11/12/12


Tagged

lista pokazivaci


Versions (?)

Lista_pokazivaca.h Strukture podataka


 / Published in: C++
 

Implementacija liste pomocu pokazivaca

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

Report this snippet  

You need to login to post a comment.