Posted By

Jcesar3 on 11/12/12


Tagged

lista pokazivaci funkcije


Versions (?)

lista_pokazivaci.h


 / Published in: C++
 

Zaglavlje sa implementacijom liste pomću pokazivaća. Sadrži funkcije za rad s listom.

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

Report this snippet  

You need to login to post a comment.