Revision: 68494
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 19, 2015 05:29 by maxxis95
Initial Code
struct el{
int Label,FirstChild,NextSibling;
};
struct tree{
el element[1000];
int First;
};
tree *InitT(int X,tree *T){
T = new tree;
for(int i=0;i<1000;i++){
T->element[i].Label = 0;
T->element[i].FirstChild = T->element[i].NextSibling = -1;
}
T->element[X].Label = X;
T->First = X;
return T;
}
int FirstChildT(int X, tree *T){
return T->element[X].FirstChild;
}
int NextSiblingT(int X, tree *T){
return T->element[X].NextSibling;
}
int ParentT(int X, tree *T){
for(int i=0;i<1000;i++){
if(T->element[i].FirstChild==X) return i;
if(T->element[i].NextSibling==X) return ParentT(i,T);
}
}
int LabelT(int X, tree *T){
return T->element[X].Label;
}
int ChangeLabelT(int X, int n, tree *T){
if(X<0) return -1;
else T->element[n].Label=X;
}
int RootT(tree *T){
return 0;
}
void CreateT(int x, int n, tree *T){
if(T->element[n].Label==0) cout << "Ne postoji cvor " << n << " !" << endl;
else{
if(T->element[n].FirstChild==-1) T->element[n].FirstChild = x;
else if(T->element[T->element[n].FirstChild].NextSibling==-1) T->element[T->element[n].FirstChild].NextSibling = x;
else{
n = T->element[n].FirstChild;
while(T->element[n].NextSibling!=-1) n = T->element[n].NextSibling;
T->element[n].NextSibling = x;
}
T->element[x].Label = T->element[n].Label+1;
T->element[x].FirstChild = T->element[x].NextSibling = -1;
}
}
int DeleteT(int X, tree *T){
if(X<0) return -1;
else{
if(T->element[X].FirstChild>0) DeleteT(T->element[X].FirstChild, T);
else{
T->element[X].Label=-1;
T->First--;
}
}
}
Initial URL
Initial Description
stablo
Initial Title
Opcenito stablo
Initial Tags
Initial Language
C++