Posted By

dleljak on 11/12/12


Tagged

listapokazivach dleljak


Versions (?)

lista_pokazivac.h dleljak


 / Published in: C++
 

biblioteka lista_pokazivac.h za 1.zadatak iz struktura podataka

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

Report this snippet  

You need to login to post a comment.