Posted By

ivandokuzovic on 11/12/12


Tagged

polje pokazivaciimplementacijastrukturepodataka


Versions (?)

lista_pokazivaci.h ivan


 / Published in: C++
 

implementacija liste pomocu polja

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

Report this snippet  

You need to login to post a comment.