Return to Snippet

Revision: 68492
at January 19, 2015 05:28 by igradeca


Initial Code
struct elem{
       char label;
       int dijete, brat;       
};

struct drvo{
       elem polje[10000];
       int korijen;
};

drvo *InitT(int x, drvo *T){
     
     T= new drvo;
     for(int i= 0; i < 10000; i++){
             T-> polje[i].label= ' ';
             T-> polje[i].dijete= -1;
             T-> polje[i].brat= -1;
             }
             
     T-> polje[x].label= 'A';
     T-> korijen= x;
     return T;
     }

int FirstChildT(int n, drvo *T){
    return T-> polje[n].dijete;
}

int NextSiblingT(int n, drvo *T){
    return T-> polje[n].brat;
}

int LabelT(int n, drvo *T){
    return T-> polje[n].label;   
}

int RootT(drvo *T){
    return T-> korijen;   
}

void ChangeLabelT(char x, int n, drvo *T){
     T-> polje[n].label= x;     
}

int ParentT(int n, drvo *T){
    
    for(int i= 0; i < 10000; i++){
            if(T-> polje[i].dijete== n) return i;
            if(T-> polje[i].brat== n) return ParentT(i, T);
            }   
}

void CreateT(int x, int n, drvo *T){
     
     if(T-> polje[n].dijete== -1) T-> polje[n].dijete= x;
     else if(T-> polje[T-> polje[n].dijete].brat== -1) T-> polje[T-> polje[n].dijete].brat= x;
     else{
          n= T-> polje[n].dijete;
          while(T-> polje[n].brat!= -1) n= T-> polje[n].brat;
          T-> polje[n].brat= x;
          }
          
     T-> polje[x].label= T-> polje[n].label+1;
     T-> polje[x].dijete= -1;
     T-> polje[x].brat= -1;
     }

drvo *DeleteT(int n, drvo *T){
     
     if(n== RootT(T)){
            T= InitT(-1, T);
            return T;
            }
            
     else{
          if(T-> polje[n].dijete!= -1) DeleteT(T-> polje[n].dijete, T);
          if(T-> polje[n].brat!= -1) DeleteT(T-> polje[n].brat, T);
         
          T-> polje[n].dijete= -1;
          T-> polje[n].brat= -1;
          T-> polje[n].label= ' ';
         
          if(T-> polje[ParentT(n, T)].brat!= -1) T-> polje[ParentT(n,T)].dijete= T->polje[n].brat;
          else T-> polje[ParentT(n, T)].dijete= -1;
          }
     
     }

Initial URL


Initial Description
Datoteka zaglavlja za "main_drvo.cpp" iz kolegija Strukture podataka, zadaća 4.
Operacije nad općenitim stablom

Initial Title
operacije_stablo.h

Initial Tags
header

Initial Language
C++