Posted By

supavkovii on 11/11/12


Tagged

lista pokazivaci


Versions (?)

lista_pokazivaci.h


 / Published in: C++
 

datoteka zaglavlja s funkcijama za implementaciju liste pomoću pokazivača

  1. struct zivotinja{
  2. int sifra;
  3. char vrsta[20],naziv[20];
  4. float cijena;
  5. char datum[15];
  6. zivotinja *slijedeci;
  7. };
  8.  
  9. typedef zivotinja pomocna;
  10. typedef zivotinja *tip;
  11.  
  12. zivotinja *InitL(zivotinja *&lista){
  13. lista=new zivotinja;
  14. lista->slijedeci=NULL;
  15. return lista;
  16. }
  17. zivotinja* EndL(zivotinja *lista){
  18. zivotinja *pom=lista;
  19. while(pom->slijedeci)
  20. pom=pom->slijedeci;
  21. return pom->slijedeci;
  22. }
  23. zivotinja* FirstL(zivotinja *lista){
  24. if(lista->slijedeci==NULL) return EndL(lista);
  25. return lista->slijedeci;
  26. }
  27. zivotinja* NextL(zivotinja* p, zivotinja *lista){
  28. if(p->slijedeci==NULL) return 0;// zadnji elementa (=NULL) nema sljedeci pokazivac -> error
  29. return p->slijedeci;
  30. }
  31. zivotinja* PreviousL(zivotinja* p, zivotinja *lista){
  32. if(lista->slijedeci==NULL) return 0;// 1. element nema prethodnog -> error
  33. zivotinja *pom=lista;
  34. while(pom->slijedeci && p!=pom->slijedeci)
  35. pom=pom->slijedeci;
  36. return pom;
  37. }
  38. zivotinja* LocateL(int sifra, zivotinja *lista){// trazi sifru
  39. zivotinja *pom=lista->slijedeci;
  40. while(pom){
  41. if(pom->sifra==sifra) return pom;
  42. pom=pom->slijedeci;
  43. }
  44. return EndL(lista);
  45. }
  46. bool InsertL(zivotinja x, zivotinja* p, zivotinja *lista){// na p dodajemo x
  47. zivotinja *pom=new zivotinja;
  48. pom->slijedeci=NULL;
  49. pom->sifra=x.sifra;
  50. pom->cijena=x.cijena;
  51. strcpy(pom->datum,x.datum);
  52. strcpy(pom->naziv,x.naziv);
  53. strcpy(pom->vrsta,x.vrsta);
  54.  
  55. if(lista->slijedeci==NULL) p=lista; // dodavanje 1. elementa
  56. if(p==NULL && PreviousL(p,lista)) p=PreviousL(p,lista); // na EndL
  57.  
  58. pom->slijedeci=p->slijedeci;
  59. p->slijedeci=pom;
  60. return true;
  61. }
  62. zivotinja RetrieveL(zivotinja* p, zivotinja *lista){
  63. zivotinja pom;
  64. if(p!=NULL){
  65. pom.sifra=p->sifra;
  66. pom.cijena=p->cijena;
  67. strcpy(pom.datum,p->datum);
  68. strcpy(pom.naziv,p->naziv);
  69. strcpy(pom.vrsta,p->vrsta);
  70. }
  71. return pom;
  72. }
  73. bool DeleteL(zivotinja* p, zivotinja *lista){
  74. if(p && p->slijedeci){
  75. zivotinja* pom=p->slijedeci; // brisemo p->slijedeci
  76. p->slijedeci=p->slijedeci->slijedeci;
  77. delete pom;
  78. return true;
  79. }
  80. else return false;
  81. }
  82. void DeleteAllL(zivotinja *lista){
  83. zivotinja* pom;
  84. while(lista->slijedeci){
  85. pom=lista->slijedeci;
  86. lista->slijedeci=lista->slijedeci->slijedeci;
  87. delete pom;
  88. }
  89. }

Report this snippet  

You need to login to post a comment.