Revision: 68457
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 19, 2015 02:32 by mateocindric
Initial Code
#include<iostream>
using namespace std;
struct elem{
int oznaka;
int prvodijete;
int sljedecibrat;
};
struct s{
elem polje[1000];
int korijen;
};
s stablo;
void InitT(int x, s&stablo){
stablo.korijen=1;
stablo.polje[1].oznaka=x;
stablo.polje[1].prvodijete=-1;
stablo.polje[1].sljedecibrat=-1;
for(int i=2;i<1000;i++){
stablo.polje[i].oznaka=-1;
stablo.polje[i].prvodijete=-1;
stablo.polje[i].sljedecibrat=-1;
}
}
int FirstChildT(int n, s stablo){
return stablo.polje[n].prvodijete;
}
int NextSiblingT(int n, s stablo){
return stablo.polje[n].sljedecibrat;
}
int RootT(s stablo){
return stablo.korijen;
}
int LabelT(int n, s stablo){
return stablo.polje[n].oznaka;
}
int ParentT(int n, s stablo){
for(int i=1;i<1000;i++){
if(FirstChildT(i,stablo)==n)
return i;
if(NextSiblingT(i,stablo)==n)
return ParentT(i,stablo);
}
return -1;
}
int CreateT(int x, int n, s&stablo){
int pom=1;
while(LabelT(pom, stablo)!=-1)
pom++;
stablo.polje[pom].oznaka=x;
stablo.polje[pom].prvodijete = -1;
stablo.polje[pom].sljedecibrat = -1;
if(stablo.polje[n].prvodijete!=-1){
n=FirstChildT(n, stablo);
while(NextSiblingT(n, stablo)!=-1)
n=NextSiblingT(n, stablo);
stablo.polje[n].sljedecibrat=pom;
}
else stablo.polje[n].prvodijete=pom;
return pom;
}
void ChangeLabelT(int x, int n, s&stablo) {
stablo.polje[n].oznaka=x;
}
void DeleteT(int n, s&stablo){
if(FirstChildT(n,stablo)!=-1)
DeleteT(stablo.polje[n].prvodijete,stablo);
if(NextSiblingT(n,stablo)!=-1)
DeleteT(stablo.polje[n].sljedecibrat,stablo);
stablo.polje[n].sljedecibrat=-1;
stablo.polje[n].prvodijete=-1;
ChangeLabelT(-1,n,stablo);
}
Initial URL
Initial Description
Implementacija općenitog stabla prvo dijete - sljedeći brat pomoću polja
Initial Title
prvo_dijete-sljedeci_brat.h
Initial Tags
c++
Initial Language
C++