Posted By

majcen555 on 11/12/12


Tagged

pokazivac Strukture polje zivotinje podatka algoritam


Versions (?)

SP_Zadatak1_lista_pokazivac_mm


 / Published in: C++
 

URL: http://e.foi.hr/wiki/strukture_podataka/index.php/Zadatak_1_Majcen_Marko

Lista pokazivac

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

Report this snippet  

You need to login to post a comment.