Posted By

milan_pavlovic on 11/11/12


Tagged

lista pointer pokaziva implementacija


Versions (?)

lista_pokazivac.h


 / Published in: C++
 

Datoteka zaglavlja koja sadrži osnovne funkcije za rad s elementima liste implementirane pomoću pokazivača.

  1. struct tdatum {
  2. int dan,godina;
  3. char mjesec[10];
  4. };
  5.  
  6. struct elem {
  7. int sifra;
  8. char vrsta[35],naziv[35];
  9. tdatum datum;
  10. float cijena;
  11. };
  12.  
  13. struct lis {
  14. elem zivotinja;
  15. lis *sljedeci;
  16. };
  17.  
  18. lis *lista=new lis;
  19. int sifra=1,br_elem=0,v=0;
  20.  
  21. void InitL(lis *lista) {
  22. lista->sljedeci=NULL;
  23. }
  24.  
  25. void InsertL(elem x,int p,lis *lista) {
  26. lis *zadnji=lista;
  27. for(int i=0;i<p;i++) zadnji=zadnji->sljedeci;
  28.  
  29. lis *novi = new lis;
  30. zadnji->sljedeci=novi;
  31. novi->zivotinja=x;
  32. novi->sljedeci=NULL;
  33. }
  34.  
  35. elem RetrieveL(int p,lis* lista) {
  36. lis *tekuci = lista->sljedeci;
  37. for(int i=0;i<p;i++) tekuci=tekuci->sljedeci;
  38. return tekuci->zivotinja;
  39. }
  40.  
  41. int EndL(lis *lista) {
  42. lis* tekuci=lista;
  43. int p=0;
  44. while(tekuci->sljedeci) {
  45. tekuci=tekuci->sljedeci;
  46. p++;
  47. }
  48. return p;
  49. }
  50.  
  51. void DeleteL(int p, lis *lista) {
  52. lis *brisi = lista->sljedeci,*prethodni=lista;
  53. for(int i=0;i<p;i++) {
  54. prethodni=brisi;
  55. brisi=brisi->sljedeci;
  56. }
  57. prethodni->sljedeci=brisi->sljedeci;
  58. delete brisi;
  59. }
  60.  
  61. int LocateL(char x[],lis* lista) {
  62. lis *tekuci=lista;
  63. int p=0;
  64. while(tekuci) {
  65. if(tekuci->sljedeci==NULL) return EndL(lista);
  66. if(!strcmp((tekuci->sljedeci)->zivotinja.naziv,x)||(v==1&&!strcmp((tekuci->sljedeci)->zivotinja.vrsta,x))) return p;
  67. tekuci=tekuci->sljedeci;
  68. p++;
  69. }
  70. return EndL(lista);
  71. }
  72.  
  73. int FirstL(lis* lista) {
  74. if(lista->sljedeci==NULL) return EndL(lista);
  75. return 0;
  76. }
  77.  
  78. int PreviousL(int p,lis* lista) {
  79. if(p==FirstL(lista)) return -1;
  80. return p-1;
  81. }
  82.  
  83. int NextL(int p,lis* lista) {
  84. if(p==EndL(lista)) return -1;
  85. if(p==PreviousL(EndL(lista),lista)) return EndL(lista);
  86. return p+1;
  87. }
  88.  
  89. void DeleteAll(lis* lista) {
  90. lis* prethodni=lista,*tekuci=lista->sljedeci;
  91. while(tekuci) {
  92. delete prethodni;
  93. prethodni=tekuci;
  94. tekuci=tekuci->sljedeci;
  95. }
  96.  
  97. delete prethodni;
  98. lista=NULL;
  99. }
  100.  
  101. void Vrati(elem x,int p, lis* lista) {
  102. lis* tekuci=lista->sljedeci;
  103. for(int i=0;i<p;i++) tekuci=tekuci->sljedeci;
  104. tekuci->zivotinja=x;
  105. }

Report this snippet  

You need to login to post a comment.