Return to Snippet

Revision: 60663
at November 12, 2012 05:34 by Pvrbek


Initial Code
#include<iostream>
    using namespace std;
    typedef int clan;
    struct zivine{
       int sifra;
       char vrsta[40];
       char naziv[40];
       float cijena;
       int dat[3];
    };
    struct Zapis_L{
       zivine vrj[1000];
       int k;
    };
    typedef struct Zapis_L lis;
    clan EndL(lis *L){
       return (L->k);
    }
    clan FirstL(lis *L){
       if(L->k==0)
          return EndL(L);
       else
          return 0;
    }
    zivine RetreiveL(clan p, lis *L){
       return L->vrj[p];
    }  
    clan InsertL(zivine x,clan p,lis *L){
       if(p>L->k || p<0) return 0;
       else{
          for( int q=L->k;q>=p;q--)
             L->vrj[q+1]=L->vrj[q];
          L->k++;
          L->vrj[p]=x;
          return 1; 
       }
    }
    lis *InitL(lis *L){
       L=new lis;
       L->k=0;
       return L;
    }
    clan NextL(clan p, lis *L){
       if(p==EndL(L)-1) return EndL(L);
       if(p==EndL(L)) return 0;
       else
          return p+1;
    }
    clan PreviousL(clan p, lis *L){
       if(p==FirstL(L)) return -1;
       if(p==EndL(L)) return p-1;
       return p-1;
    }
    
    clan DeleteL(clan p, lis *L){
       if((L->k==0))
          return 0;
       if((p>=L->k)||(p<0))
          return 0;
       if(p==EndL(L))
          return 0;
       if(p==FirstL(L)){
          L->k--;
          for( int i=p; i<L->k; i++)
             L->vrj[i]=L->vrj[i+1];
          return 1;
       }
       else{
          L->k--;
          for( int i=p; i<L->k; i++)
             L->vrj[i]=L->vrj[i+1];
       }
       return 1;
    }
    clan DeleteAll(lis *L){
       return L->k==0;
}
    clan LocateL(zivine x, lis *L){
       clan pozicija=EndL(L);
       pozicija=PreviousL(pozicija,L);
       if(strlen(x.naziv)>0){
          if(FirstL(L)!=EndL(L)){
             while(5){
                zivine tekuci=RetreiveL(pozicija,L);
                if(strcmp(x.naziv,tekuci.naziv)==0)
                   return pozicija;
                if(pozicija==FirstL(L))break;
                pozicija=PreviousL(pozicija,L);
             }
          }
       }
       if(strlen(x.vrsta)>0){
          if(FirstL(L)!=EndL(L)){
             while(5){
                zivine tekuci=RetreiveL(pozicija,L);
                if(strcmp(x.vrsta,tekuci.vrsta)==0)
                   return pozicija;
                if(pozicija==FirstL(L))break;
                pozicija=PreviousL(pozicija,L);
             }
          }
       }
       return EndL(L);
    }
    void Merge(lis *L,int i,int k,int j){
         int start=i, zad=k+1, br=0, vel=j-i+1;
         zivine *pom = new zivine [j-i+1];
         while (start<=k && zad<=j){
            if(L->vrj[start].cijena>L->vrj[zad].cijena)
               pom[br++]=L->vrj[start++];
            else if(L->vrj[start].cijena<L->vrj[zad].cijena)
               pom[br++]=L->vrj[zad++];
            if(L->vrj[start].cijena==L->vrj[zad].cijena){
               if(strcmp(L->vrj[start].naziv,L->vrj[zad].naziv)==1)
                  pom[br++]=L->vrj[start++];
               else
               pom[br++]=L->vrj[zad++];
            }
         }
         while(start<=k)
            pom[br++]=L->vrj[start++];
         while(zad<=j)
            pom[br++]=L->vrj[zad++];
         for(int I=0;I<vel;I++)
            L->vrj[i+I]=pom[I];
         delete []pom;
    }
     
    void Sort(lis *L, int i,int j){
         int sred;
         if(i<j){
            sred=(i+j)/2;
            Sort(L,i,sred);
            Sort(L,sred+1,j);
            Merge(L,i,sred,j);
         }
    }
    void Merge(lis *L,int i,int j){
         if(FirstL(L)==EndL(L)){
            cout<<"Prazna lista! "<<endl;
            return;
         }
         Sort(L,0,EndL(L)-1);
         zivine tekuci;
         for(int i=0;i<=EndL(L)-1;i++){
            tekuci=L->vrj[i];
            cout<<"Sifra: "<<tekuci.sifra<<endl;
            cout<<"Naziv: "<<tekuci.naziv<<endl;
            cout<<"Datum: "<<tekuci.dat[0]<<"."<<tekuci.dat[1]<<"."<<tekuci.dat[2]<<endl;
            cout<<"Vrsta: "<<tekuci.vrsta<<endl;
            cout<<"Cijena: "<<tekuci.cijena<<endl;
            cout<<endl; }
    }

Initial URL


Initial Description
Ovo je moja lista polja koju sam koristio u svom glavnom programu koja je implementirana kao lista pomoću polja

Initial Title
Strukture podataka/Evidencija životinja/Lista polja

Initial Tags
podataka

Initial Language
C++