/ Published in: C++
asdf
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; struct elem{ char label; int firstchild, nextsibling; }; struct tree{ elem element[1000]; int first; }; tree T; int RootT(tree *T){ return T->first; } int FirstChildT(int n, tree *T){ if(T->element[n].firstchild != -1) return T->element[n].firstchild; else return -1; } int NextSiblingT(int n, tree *T){ if(T->element[n].nextsibling != -1) return T->element[n].nextsibling; else return -1; } int ParentT(int n, tree *T){ for(int i=0; i<1000; i++){ if(T->element[i].firstchild == n) return i; if(T->element[i].nextsibling == n) return ParentT(i,T); } } char LabelT(int n, tree *T){ return T->element[n].label; } void CreateT(int x, int n, tree *T){ if(T->element[n].label == '0') { cout << "Ne postoji cvor " << n << endl; return; } if(T->element[n].firstchild == -1) T->element[n].firstchild = x; else if (T->element[T->element[n].firstchild].nextsibling == -1) T->element[T->element[n].firstchild].nextsibling = x; else{ n = T->element[n].firstchild; while(T->element[n].nextsibling != -1) n = T->element[n].nextsibling; T->element[n].nextsibling = x; } T->element[x].label = T->element[n].label+1; T->element[x].firstchild = -1; T->element[x].nextsibling = -1; } void ChangeLabelT(char x, int n, tree *T){ T->element[n].label = x; } void DeleteT(int n, tree *T){ if(T->element[n].firstchild != -1) DeleteT(T->element[n].firstchild,T); if(T->element[n].nextsibling != -1) DeleteT(T->element[n].nextsibling,T); T->element[n].firstchild = -1; T->element[n].nextsibling = -1; T->element[n].label = '0'; if(T->element[ParentT(n,T)].nextsibling != -1) T->element[ParentT(n,T)].firstchild = T->element[ParentT(n,T)].nextsibling; else T->element[ParentT(n,T)].firstchild = -1; } tree *InitT(int x, tree *T){ T = new tree; for(int i=0; i<1000; i++){ T->element[i].label = '0'; T->element[i].firstchild = -1; T->element[i].nextsibling = -1; } T->element[x].label = 'A'; T->first = x; return T; }
URL: asdf