Posted By

marcelic on 11/11/12


Tagged


Versions (?)

Evidencija zivotinja - lista_pokazivac.h


 / Published in: C++
 

Implementacija liste pomocu pokazivaca

  1. using namespace std;
  2.  
  3. struct Zivotinja {
  4. int sifra;
  5. char vrsta[30];
  6. char naziv[30];
  7. float cijena;
  8. struct {
  9. int dan, mjesec, godina;
  10. }datum_dostave;
  11. };
  12.  
  13. struct List {
  14. Zivotinja zivotinja;
  15. List *sljedeci;
  16. };
  17.  
  18. typedef List *element;
  19. typedef List lista;
  20.  
  21. element FirstL(lista *L) {
  22. return L->sljedeci;
  23. }
  24. element EndL(lista *L) {
  25. element tekuci=L->sljedeci;
  26. while(tekuci->sljedeci) tekuci=tekuci->sljedeci;
  27. return tekuci;
  28. }
  29. element NextL(element p, lista *L) {
  30. return p->sljedeci;
  31. }
  32. element PreviousL(element p, lista *L) {
  33. element tekuci=L;
  34. while(tekuci->sljedeci!=p) tekuci=tekuci->sljedeci;
  35. return tekuci;
  36. }
  37. element LocateL (Zivotinja x, lista * L){
  38. element tekuci = L;
  39. if (x.naziv == 0) {
  40. while (tekuci) {
  41. if (tekuci == EndL(L)) return EndL(L);
  42. if (tekuci->zivotinja.sifra == x.sifra) return tekuci;
  43. tekuci = tekuci->sljedeci;
  44. };
  45. return tekuci;
  46. } else {
  47. while (tekuci) {
  48. if (tekuci == EndL(L)) return EndL(L);
  49. if (tekuci->zivotinja.naziv == x.naziv) return tekuci;
  50. tekuci = tekuci->sljedeci;
  51. };
  52. return tekuci;
  53. }
  54. }
  55. int InsertL(Zivotinja x, element p, lista *L) {
  56. element tekuci=new lista;
  57. element prethodni;
  58. tekuci->zivotinja=x;
  59. tekuci->sljedeci=p;
  60. prethodni=PreviousL(p, L);
  61. prethodni->sljedeci=tekuci;
  62. if(tekuci->zivotinja.sifra==x.sifra)
  63. return 1;
  64. else return 0;
  65. }
  66. int DeleteL(element p, lista *L) {
  67. element prethodni;
  68. if(p==EndL(L))
  69. return 0;
  70. prethodni=PreviousL(p, L);
  71. prethodni->sljedeci=p->sljedeci;
  72. delete p;
  73. return 1;
  74. }
  75. Zivotinja RetreiveL(element p, lista *L) {
  76. return p->zivotinja;
  77. }
  78. void DeleteAllL(lista *L) {
  79. element tekuci=L->sljedeci, sljedeci;
  80. while(tekuci) {
  81. sljedeci=tekuci->sljedeci;
  82. delete tekuci;
  83. tekuci=sljedeci;
  84. }
  85. }
  86. lista *InitL(lista *L) {
  87. L=new lista;
  88. lista *zadnji=new lista;
  89. L->sljedeci=zadnji;
  90. zadnji->sljedeci=NULL;
  91. return L;
  92. }

Report this snippet  

You need to login to post a comment.