Return to Snippet

Revision: 68531
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++