View: implementacija stabla pomoću polja

  1. 2 months ago by anisambol
    struct elmnt {
           int vrij;
           bool juzd;
    };
    
    struct binstab {
           struct elmnt elmnti[10000];
    };
    
    typedef struct binstab *binstablo;
    typedef int chvor;
    
    chvor InitB(chvor ruut, binstab *binstablo){
         int i;
         for(i=0; i<10000;i++)
                  binstablo->elmnti[i].juzd=false;
         binstablo->elmnti[0].vrij=ruut;
         binstablo->elmnti[0].juzd=true;   
         return 0; 
    }
    
    chvor RootB(binstab *binstablo){
         if(binstablo->elmnti[0].juzd==true) return 0;
         else
             return -1;
    }
    
    chvor LeftChildB(chvor ind, binstab *binstablo){
         if(binstablo->elmnti[(ind*2)+1].juzd==true) return (ind*2)+1;
         else
             return -1; 
    }
    
    chvor RightChildB(chvor ind, binstab *binstablo){
              if(binstablo->elmnti[(ind*2)+2].juzd==true) return (ind*2)+2;
              else
                  return -1;
    }
    
    chvor ParentB(chvor ind, binstab *binstablo){
              if(ind < 1) return -1;
              if(binstablo->elmnti[int((ind-1)/2)].juzd==true) return int((ind-1)/2);
              else
                  return -1;
    }
    
    chvor CreateLeftB(int vrij, chvor ind, binstab *binstablo){
         int x=(ind*2)+1;
         if(LeftChildB(ind, binstablo)==-1){
                               binstablo->elmnti[x].vrij=vrij;
                               binstablo->elmnti[x].juzd=true;
         }
         else{
              cout<<"Vec postoji lijevo dijete."<<endl;
         }
    }
    
    chvor CreateRightB(int vrij, chvor ind, binstab *binstablo){
              int x=(ind*2)+2;
              if(RightChildB(ind, binstablo)==-1){
                                     binstablo->elmnti[x].vrij=vrij;
                                     binstablo->elmnti[x].juzd=true;                       
              }
              else{
                   cout<<"Vec postoji desno dijete."<<endl;
              }
    }
    
    int LabelB(chvor ind, binstab *binstablo){
        if(binstablo->elmnti[ind].juzd==true) return binstablo->elmnti[ind].vrij;
        else{
            cout<<"Ovaj cvor nema vrijednost."<<endl;
        }
    }
    
    void ChangeLabelB(int vrij, chvor ind, binstab *binstablo){
         if(binstablo->elmnti[ind].juzd==true){
             binstablo->elmnti[ind].vrij=vrij;
         }
         else{
              cout<<"Ovaj cvor nema vrijednost."<<endl;
         }
    }
    
    void DeleteB(chvor ind, binstab *binstablo){
         if(binstablo->elmnti[(ind*2)+1].juzd==true){
              DeleteB((ind*2)+1, binstablo);
         }
         if(binstablo->elmnti[(ind*2)+2].juzd==true){
              DeleteB((ind*2)+2, binstablo);
         }
         binstablo->elmnti[ind].juzd=false;
    }
    Paste this in your website: <script type="text/javascript" src="http://www.posteet.com/embed/2031"></script>

2 comments about "implementacija stabla pomoću polja"

  1. nisam baš previše gledala tuđe implementacije,ali vjerujem da se moja razlikuje po imenima varijabli,mislim da su jedinstvena :D
    anisambol on January 11, 2010
  2. radila sam svoju implementaciju po smjernicama iz vježbi i iz programiranja pa vjerujem da je dosta slična onima od mojih kolega koji su radili po istim smjernicama
    anisambol on January 11, 2010