Revision: 68492
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++