Posted By

nsacic on 11/12/12


Tagged

lista pokazivaci operacije nad listom


Versions (?)

pokazivac.h


 / Published in: C++
 

biblioteka pokazivaca

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

Report this snippet  

You need to login to post a comment.