Return to Snippet

Revision: 38708
at January 6, 2011 08:12 by masrnec


Initial Code
#ifndef BSTABLO_POKAZIVAC_H

#ifndef BSTABLO_POLJE_H
#define BSTABLO_POLJE_H

struct element{
    labeltype label;
    int used;
};
struct bt{
    struct element elements[MAX_EL];
};
typedef struct bt *btree;
typedef int node;

btree InitB(labeltype x,btree T){
     T = new bt;
     T->elements[1].label = x;
     T->elements[1].used = 1;
     return T;
}
node ParentB(node n,btree T){
     if(T==NULL) return 0;
     if(n<2) return IZLAZ;
     return n/2;
}
node LeftChildB(node n,btree T){ 
     if(T->elements[2*n].used == PRAZNO) return IZLAZ;
     return 2*n;
}
node RightChildB(node n,btree T){
     if(T->elements[2*n+1].used == PRAZNO) return IZLAZ;
     return 2*n+1;     
}
labeltype LabelB(node n,btree T){
     if(T==NULL) return 0;
     if(T->elements[n].used == PRAZNO) return IZLAZ;
     return T->elements[n].label;
}
void ChangeLabelB(labeltype x,node n,btree T){
     T->elements[n].label = x;
}
node RootB(btree T){
     if(T==NULL) return 0;
     if(T->elements[1].used == PRAZNO) return IZLAZ;
     return 1;
}
int CreateLeftB(labeltype x,node n,btree T){
     if(T->elements[2*n].used == PUNO) return GRESKA;
     T->elements[2*n].used = PUNO;
     T->elements[2*n].label = x;
     return 0;
}
int CreateRightB(labeltype x,node n,btree T){
     if(T->elements[2*n+1].used == PUNO) return GRESKA;
     T->elements[2*n+1].used = PUNO;
     T->elements[2*n+1].label = x;
     return 0;
}
bool ExistsLeftChildB(node n,btree T){
     if(T==NULL) return IZLAZ;
     if(T->elements[n*2].used == PUNO) return true;
     return false;
}
bool ExistsRightChildB(node n,btree T){
     if(T==NULL) return IZLAZ;
     if(T->elements[n*2+1].used == PUNO) return true;
     return false;
}
void DeleteB(node n,btree T){
   if(ExistsLeftChildB(n,T)){
       DeleteB(LeftChildB(n,T),T);
   }
   if(ExistsRightChildB(n,T)){
       DeleteB(RightChildB(n,T),T);
   }
   T->elements[n].used = PRAZNO;
}

#endif  /*BSTABLO_POLJE_H*/

#endif  /*BSTABLO_POKAZIVAC_H*/

Initial URL


Initial Description


Initial Title
binarno stablo - implementacija - polje

Initial Tags


Initial Language
C++