Posted By

ahuskano on 11/11/12


Tagged

lista Strukture podataka pokazivaci ATP


Versions (?)

Lista_pokazivaci.h


 / Published in: C++
 

Source code biblioteke lista_pokazivaci.h gdje je implementiran ATP lista pomoću pokazivača

  1. struct elem{
  2. int sifra;
  3. char vrsta[35], naziv[35],datum[12];
  4. float cijena;
  5. };
  6. struct lista{
  7. elem detalji;
  8. lista *cursor;
  9. };
  10. typedef lista *element;
  11.  
  12. lista* InitL(lista *x){
  13. x = new lista;
  14. x->cursor = NULL;
  15. return x;
  16. }
  17. element EndL(lista *x){
  18. lista *novi = x;
  19. while(novi->cursor)
  20. novi = novi->cursor;
  21. return novi->cursor;
  22. }
  23. element FirstL(lista *x){
  24. if(x->cursor==NULL)
  25. return EndL(x);
  26. return x->cursor;
  27. }
  28. element PreviousL(element e, lista *x){
  29. if(x->cursor==NULL)
  30. return 0;
  31. lista *tekuci = x->cursor;
  32. while(tekuci->cursor)
  33. if(tekuci->cursor==e)break;
  34. else tekuci=tekuci->cursor;
  35. return tekuci;
  36. }
  37. element NextL(element e, lista *x){
  38. if(e->cursor == NULL)
  39. return EndL(x);
  40. return e->cursor;
  41. }
  42.  
  43. elem RetreiveL(element e, lista *x){
  44. return e->detalji;
  45. }
  46. int InsertL(elem e, lista *p, lista *x){
  47. lista *pom=new lista;
  48. pom->detalji=e;
  49. if(x->cursor==NULL)
  50. p=x;
  51. if(p==NULL && PreviousL(p,x))
  52. p=PreviousL(p,x);
  53. pom->cursor=p->cursor;
  54. p->cursor=pom;
  55. return 1;
  56. }
  57. element LocateL(elem e,lista *x){
  58. lista *tekuci,*novi=x->cursor;
  59. if(e.sifra==-1)
  60. while(novi)
  61. if(strcmp(e.naziv,novi->detalji.naziv)==0)
  62. return novi;
  63. else
  64. novi=novi->cursor;
  65. else if(e.sifra==-2)
  66. while(novi)
  67. if(strcmp(e.vrsta,novi->detalji.vrsta)==0)
  68. return novi;
  69. else
  70. novi=novi->cursor;
  71. return EndL(x);
  72. }
  73. int DeleteL(element e, lista *x){
  74. lista *novi=x->cursor, *tekuci=x;
  75. if(e==EndL(x))
  76. return 0;
  77. while(novi){
  78. if(e==novi){
  79. tekuci->cursor=novi->cursor;
  80. delete novi;
  81. return 1;
  82. }
  83. tekuci=novi;
  84. novi=novi->cursor;
  85. }
  86. return 0;
  87. }
  88. void DeleteAll(lista *x){
  89. lista *a=x,*b=x->cursor;
  90. while(b){
  91. a->cursor=b->cursor;
  92. delete b;
  93. b=a->cursor;
  94. }
  95. delete b;
  96. }

Report this snippet  

You need to login to post a comment.