Return to Snippet

Revision: 65781
at January 20, 2014 02:27 by dare10


Initial Code
#include <iostream>
using namespace std;
struct elem{
       char labela;
       int dijete,brat;
       };
struct tree{
       elem P[1000];
       int root;
       };
tree *InitT(int k,tree *T){
     T=new tree;
     for(int i=0;i<1000;i++){
             T->P[i].labela='0';
             T->P[i].dijete=T->P[i].brat=-1;
             }
     T->P[k].labela='A';
     T->root=k;
     return T;
     }
void ChangeLabelT(char lab,int n,tree *T ){
     T->P[n].labela=lab;
     }
int RootT(tree *T){
    return T->root;
    }
char LabelT(int n,tree *T){
    return T->P[n].labela;
    }
void CreateT(int x,int n,tree *T){
     if(T->P[n].labela=='0'){
                               cout << "Ne postoji cvor: " << n << endl;
                               return;
                               }
     if(T->P[n].dijete==-1)T->P[n].dijete=x;
     else if(T->P[T->P[n].dijete].brat==-1)T->P[T->P[n].dijete].brat=x;
     else{
          n=T->P[n].dijete;
           while(T->P[n].brat!=-1) n = T->P[n].brat;
           T->P[n].brat = x;
           }
           T->P[x].labela = T->P[n].labela+1;
           T->P[x].dijete = T->P[x].brat = -1;
     }
int FirstChildT(int n,tree *T){
 return T->P[n].dijete;   
}
int NextSiblingT(int n,tree *T){
 return T->P[n].brat;   
}
int ParentT(int n,tree *T){
 for(int i=0;i<1000;i++){
         if(T->P[i].dijete==n)return i;
         if(T->P[i].brat==n)return ParentT(i,T);
         }   
}
void DeleteT(int n,tree *T){
     if(T->P[n].dijete!=-1) DeleteT(T->P[n].dijete,T);
     if(T->P[n].brat!=-1) DeleteT(T->P[n].brat,T);
     T->P[n].dijete=T->P[n].brat=-1;
     T->P[n].labela='0';
     if(T->P[ParentT(n,T)].brat!=-1) T->P[ParentT(n,T)].dijete = T->P[ParentT(n,T)].brat;
     else T->P[ParentT(n,T)].dijete = -1;
     }

Initial URL


Initial Description
Header datoteka za implementaciju stabla prvo dijete sljedeci brat

Initial Title
Prvo dijete sljedeci brat

Initial Tags


Initial Language
C++