/ Published in: C++
Expand |
Embed | Plain Text
using namespace std; struct el{ char label; int firstchild,nextsibling; }; struct otr{ el elements[1000]; int first; }; int ParentT(int n, otr *tree){ if(tree->first==n){ return -1; cout<<"Cvor je korijen"<<endl; } for (int i=0;i<1000;i++){ if(tree->elements[i].firstchild==n) return i; else if(tree->elements[i].nextsibling==n)ParentT(i,tree); } return -1; cout<<"Cvor ne postoji u stablu"<<endl; }; int FirstChildT(int n, otr *tree){ if(tree->elements[n].firstchild==-1) { cout<<"Zadani cvor nema dijete"<<endl; return -1; } else return tree->elements[n].firstchild; }; int NextSiblingT(int n, otr *tree){ if(tree->elements[n].nextsibling==-1){ cout<<"Cvor je najdesnije dijete"<<endl; return -1; } else return tree->elements[n].nextsibling; }; char LabelT(int n, otr *tree){ return tree->elements[n].label; }; int RootT(otr *tree){ return tree->first; }; void CreateT(int dijete, int n, otr *tree){ char labela; if(tree->elements[n].firstchild==-1){ tree->elements[n].firstchild=dijete; tree->elements[dijete].firstchild=-1; tree->elements[dijete].nextsibling=-1; cout<<"Oznaka: "; cin>>labela; tree->elements[dijete].label=labela; } else{ int brat; bool ima=true; brat=tree->elements[n].firstchild; do{ if(tree->elements[brat].nextsibling==-1) ima=false; else brat=tree->elements[brat].nextsibling; }while(ima); tree->elements[brat].nextsibling=dijete; tree->elements[dijete].firstchild=-1; tree->elements[dijete].nextsibling=-1; cout<<"Oznaka: "; cin>>labela; tree->elements[dijete].label=labela; } }; void ChangeLabelT(char x, int n, otr *tree){ tree->elements[n].label=x; }; void Del(int n, otr *tree){ if(tree->elements[n].nextsibling==-1&&tree->elements[ParentT(n,tree)].firstchild==n) tree->elements[ParentT(n,tree)].firstchild=-1; else if(tree->elements[n].nextsibling!=-1&&tree->elements[ParentT(n,tree)].firstchild==n) tree->elements[ParentT(n,tree)].firstchild=tree->elements[n].nextsibling; else{ int brat=tree->elements[ParentT(n,tree)].firstchild; while(tree->elements[brat].nextsibling!=n) brat=tree->elements[brat].nextsibling; tree->elements[brat].nextsibling=tree->elements[n].firstchild; } }; void DeleteT(int n,otr *tree){ if(tree->elements[n].firstchild!=-1){ while(tree->elements[n].firstchild!=-1) Del(tree->elements[n].firstchild,tree); Del(n,tree); } else Del(n,tree); }; void InitT(int korijen, otr *tree){ char labela; tree->first=korijen; tree->elements[korijen].firstchild=-1; tree->elements[korijen].nextsibling=-1; cout<<"Oznaka: "; cin>>labela; tree->elements[korijen].label=labela; };
You need to login to post a comment.
