Return to Snippet

Revision: 68512
at January 19, 2015 07:35 by akljaic


Initial Code
#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;
}

Initial URL
asdf

Initial Description
asdf

Initial Title
opcenito_stablo.h

Initial Tags

                                

Initial Language
C++