Revision: 68531
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 19, 2015 08:39 by brumihali
Initial Code
struct element{
char sadrzaj;
int p_dijete, s_brat;
};
struct tr{
element broj[10000];
int prvi;
};
tr *InitT(int x, tr *T){
T = new tr;
for(int i=0; i<10000; i++){
T->broj[i].sadrzaj = '0';
T->broj[i].p_dijete = -1;
T->broj[i].s_brat = -1;
}
T->broj[x].sadrzaj = 'A';
T->prvi = x;
return T;
}
int RootT(tr *T){
return T->prvi;
}
int ParentT(int n, tr *T){
if(RootT(T) == n) return -1;
for(int i=0; i<10000; i++){
if(T->broj[i].p_dijete == n) return i;
}
}
int FirstChildT(int n, tr *T){
return T->broj[n].p_dijete;
}
int NextSiblingT(int n, tr *T){
return T->broj[n].s_brat;
}
char LabelT(int n, tr *T){
return T->broj[n].sadrzaj;
}
void ChangeLabelT(char x, int n, tr *T){
T->broj[n].sadrzaj = x;
}
void CreateT(int x, int n, tr *T){
if(LabelT(x, T) != '0'){
cout <<"Vrijednost vec postoji u stablu!"<<endl;
return;
}
if(LabelT(n, T) == '0'){
cout << "Cvor ne postoji u stablu!"<<endl;
return;
}
if(FirstChildT(n, T) == -1) T->broj[n].p_dijete = x;
else if(NextSiblingT(FirstChildT(n, T), T) == -1) T->broj[FirstChildT(n, T)].s_brat = x;
else{
n = FirstChildT(n, T);
while(NextSiblingT(n, T) != -1) n = NextSiblingT(n, T);
T->broj[n].s_brat = x;
}
T->broj[x].p_dijete = -1;
T->broj[x].s_brat = -1;
T->broj[x].sadrzaj = T->broj[n].sadrzaj+1;
}
void DeleteT (int n, tr *T) {
int pom;
if (FirstChildT(n,T)!=-1) {
pom = FirstChildT(n,T);
DeleteT(pom,T);
while (NextSiblingT(pom,T)!=-1) {
pom = NextSiblingT(pom,T);
DeleteT(pom,T);
}
}
T->broj[n].sadrzaj = -1;
if (n != RootT(T) && FirstChildT(ParentT(n,T), T)==n)
T->broj[ParentT(n, T)].p_dijete = NextSiblingT(n,T);
else if (n != RootT(T)) {
pom = FirstChildT(ParentT(n,T),T);
while (NextSiblingT(pom,T) != n)
pom = NextSiblingT(pom,T);
T->broj[pom].s_brat = NextSiblingT(n,T);
}
}
Initial URL
Initial Description
Općenito stablo - prvo dijete sljedeći brat.
Initial Title
p_dijete_s_brat.h
Initial Tags
Initial Language
C++