Posted By

matakmonika on 11/12/12


Tagged

pokazivac biblioteka


Versions (?)

lista_pokazivac


 / Published in: C++
 

lista pokazivac

  1. struct datum {
  2. int dan, godina, mjesec;
  3. };
  4. struct podaci {
  5. int sifra;
  6. char vrsta[40],naziv[40];
  7. float cijena;
  8. datum dat_dost;
  9. };
  10. struct tlista {
  11. podaci zivotinja [5000];
  12. tlista *sljedeci;
  13. };
  14.  
  15.  
  16. tlista *lista=new tlista;
  17. int sifra=1, br=0;
  18.  
  19. int firstl (tlista *lista) {
  20. return lista;
  21. }
  22.  
  23.  
  24. void insertl(podaci x, int br, tlista *lista){
  25. tlista *zadnji=lista;
  26. while(zadnji->sljedeci) zadnji=zadnji->sljedeci;
  27. tlista *novi=new tlista;
  28. zadnji->sljedeci=novi;
  29. novi->zivotinja=x;
  30. novi->sljedeci=NULL;
  31. }
  32.  
  33.  
  34.  
  35. int endl(tlista *lista){
  36. return 0 ;
  37. }
  38.  
  39. int nextl (int *p, tlista *lista){
  40. tlista *zadnji= lista;
  41. while (zadnji->sljedeci) zadnji=zadnji->sljedeci;
  42. if (!p==zadnji) return p->sljedeci;
  43. else return 0;
  44. }
  45.  
  46. tlista locatel (char mat[], tlista *lista){
  47. tlista *tekuci=lista;
  48. while(tekuci){
  49. if(strcmp(tekuci->zivotinja.naziv,mat)==0) return(int)tekuci;
  50. tekuci=tekuci->sljedeci;
  51. }
  52. return NULL;
  53. }
  54.  
  55. void initl (tlista *lista){
  56. lista=NULL;
  57. }
  58.  
  59. void deletel(tlista *p, tlista *lista){
  60. tlista *tekuci=p->sljedeci;
  61. p->sljedeci=tekuci->sljedeci;
  62. delete tekuci;
  63. }
  64. podaci retrieveL (int p, tlista *lista){
  65. tlista *tekuci= lista->sljedeci;
  66. for(int i=0;i<p;i++) tekuci=tekuci->sljedeci;
  67. return tekuci->zivotinja;
  68. }
  69. void deleteallL (tlista *lista) {
  70. while(lista->sljedeci){
  71. tlista *tekuci=lista->sljedeci;
  72. lista->sljedeci=tekuci->sljedeci;
  73. delete tekuci;
  74. } delete lista;
  75. }
  76. void spoji(podaci a[], int i, int k, int j) {
  77. int I=i,J=k+1,K=0;
  78. podaci *b = new podaci [j-i+1];
  79.  
  80. while(I<=k && J<=j){
  81.  
  82. if(a[I].cijena>a[J].cijena) b[K++]=a[I++];
  83. else if(a[I].cijena<a[J].cijena) b[K++]=a[J++];
  84. else if(strcmp(a[I].naziv,a[J].naziv)==-1) b[K++]=a[J++];
  85. else b[K++]=a[I++];
  86. }
  87.  
  88. if(I>k) while(J<=j) b[K++]=a[J++];
  89. else while(I<=k) b[K++]=a[I++];
  90.  
  91. for(I=0;I<=j-i;I++) a[i+I]=b[I];
  92. delete [] b;
  93.  
  94. }
  95.  
  96. void msort(podaci a[],int i, int j) {
  97. if(i<j) {
  98. int k=(i+j)/2;
  99. msort(a,i,k);
  100. msort(a,k+1,j);
  101. spoji(a,i,k,j);
  102. }
  103. }
  104.  
  105. void msort() {
  106. msort(lista.zivotinja,0,br-1);
  107. }

Report this snippet  

You need to login to post a comment.