Posted By

Ahilis001 on 11/12/12


Tagged

pokazivaci implementacija zivotinje


Versions (?)

implementacija preko pokazivaca


 / Published in: C++
 

implementacija trgovine kucnim ljubimcima preko pokazivaca... sadrzi funkcije poput FirstL(L), EndL(L),NextL(p,L),PreviousL(p,L), LocateL(x,L), InsertL(x,p,L), DeleteL(p,L), RetreiveL(p,L), DeleteAllL(L) i InitL(L) nazivima prilagodenim za zadatak...

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct zivotinje {
  5. int sifra;
  6. char vrsta[30],naziv[30];
  7. float cijena;
  8. int datum;
  9. };
  10.  
  11. struct li{
  12. zivotinje elem;
  13. li *sljedeci;
  14. };
  15.  
  16. typedef li *element;
  17. typedef li lista;
  18.  
  19.  
  20. element kraj_liste(lista *l){
  21. element posljednji=l;
  22. while(posljednji->sljedeci!=NULL)
  23. posljednji=posljednji->sljedeci;
  24. return posljednji;
  25. }
  26.  
  27. element pocetak_liste(lista *l){
  28. if ((*l).sljedeci==0)
  29. return kraj_liste(l);
  30. else
  31. return l->sljedeci;
  32. }
  33.  
  34.  
  35. element sljedeca_zivotinja(element p, lista *l){
  36. if(p->sljedeci==NULL)
  37. return kraj_liste(l);
  38. else
  39. return p->sljedeci;
  40. }
  41.  
  42. element prethodna_zivotinja(element p, lista *l){
  43. lista *tekuci=l->sljedeci;
  44. while(p!=tekuci->sljedeci && tekuci->sljedeci!=NULL)
  45. tekuci=tekuci->sljedeci;
  46. return tekuci;
  47. }
  48.  
  49. element lociranje_zivotinje_naziv(zivotinje x, lista *l){
  50. element tekuci=l;
  51. if(tekuci->sljedeci==0){
  52. cout<<"Lista je prazna..."<<endl;
  53. exit(0);
  54. }
  55. else{
  56. while(tekuci!=kraj_liste(l)){
  57. if(strcmp(x.naziv,tekuci->elem.naziv)==0)
  58. return tekuci;
  59. tekuci=tekuci->sljedeci;
  60. }
  61. }
  62. }
  63.  
  64. element lociranje_zivotinje_vrsta(zivotinje x, lista *l){
  65. element tekuci=l;
  66. if(tekuci->sljedeci==0){
  67. cout<<"Lista je prazna..."<<endl;
  68. exit(0);
  69. }
  70. else{
  71. while(tekuci!=kraj_liste(l)){
  72. if(strcmp(x.vrsta,tekuci->elem.vrsta)==0)
  73. return tekuci;
  74. tekuci=tekuci->sljedeci;
  75. }
  76. }
  77. }
  78.  
  79.  
  80. int upis_zivotinje(zivotinje x, lista *p, lista *l){
  81. lista *tekuci=p;
  82. lista *novi=new lista;
  83. if(p==kraj_liste(l)){
  84. novi->sljedeci=NULL;
  85. tekuci->sljedeci=novi;
  86. tekuci->elem=x;
  87. }
  88. else if (p==pocetak_liste(l)){
  89. novi->sljedeci=tekuci;
  90. l->sljedeci=novi;
  91. novi->elem=x;
  92. }
  93. else {
  94. lista *prethodni=prethodna_zivotinja(p,l);
  95. novi->sljedeci=tekuci;
  96. prethodni->sljedeci=novi;
  97. novi->elem=x;
  98. }
  99. if(tekuci->elem.sifra==x.sifra)
  100. return 1;
  101. else
  102. return 0;
  103. }
  104.  
  105. int brisanje_zivotinje( element p, lista *l){
  106. element prethodni, tekuci;
  107. tekuci=p;
  108. if (p==pocetak_liste(l)){
  109. l->sljedeci=tekuci->sljedeci;
  110. delete tekuci;
  111. return 1;
  112. }
  113. else{
  114. prethodni= prethodna_zivotinja(tekuci,l);
  115. prethodni->sljedeci=tekuci->sljedeci;
  116. delete tekuci;
  117. return 1;
  118. }
  119. return 0;
  120. }
  121.  
  122. zivotinje vrijednost_zivotinje_u_listi(element p, lista*l){
  123. return p->elem;
  124. }
  125.  
  126. void brisanje_liste(lista *l){
  127. lista *obrisi= l->sljedeci;
  128. if(obrisi==0) return;
  129. lista *s=obrisi->sljedeci;
  130. while(s){
  131. delete obrisi;
  132. obrisi=s;
  133. s=obrisi->sljedeci;
  134. }
  135. delete obrisi;
  136. }
  137.  
  138. lista *inicijalizacija_liste(lista *l){
  139. l=new lista;
  140. lista *zadnji=new lista;
  141. l->sljedeci=zadnji;
  142. zadnji->sljedeci=NULL;
  143. return l;
  144. }

Report this snippet  

You need to login to post a comment.