Return to Snippet

Revision: 38448
at January 3, 2011 09:35 by originx


Initial Code
#include <cstring>
using namespace std;
struct element {
   int used;
   string label;     
};

struct bt {
       element elements[10000];
};
typedef struct bt btree;
int Parent(int cvor, btree *stablo){
  if(cvor==1) return 0;
  if(cvor%2) 
  cvor--;
  return cvor/2;  
}
int LeftChildB(int cvor, btree *stablo) {
     if(stablo->elements[cvor].used == 0)
           return 0;
     if(stablo->elements[2*cvor].used == 1)
           return 2*cvor;
}

int RightChildB(int cvor, btree *stablo) {
     if(stablo->elements[cvor].used == 0) 
     return 0;
     if(stablo->elements[2*cvor+1].used == 1) 
     return 2*cvor+1;
     else return 0;
}

void LabelB(int cvor, btree *stablo) {
     if(stablo->elements[cvor].used==true)
          cout<<"Na cvoru "<<cvor<<" je label: "<<stablo->elements[cvor].label<<endl;
     else
     cout<<"Taj cvor nije iskoristen...\n";
}


void ChangeLabelB(string nova_vrijednost,int cvor, btree *stablo) {
     if(stablo->elements[cvor].used == 0){ 
     LabelB(cvor,stablo);
     return;
     }
     stablo->elements[cvor].label = nova_vrijednost;
}

int RootB(btree *stablo) {
     if(stablo->elements[1].used == 0) 
     return 0;
     else
     return 1;
}

void CreateLeftB(string label, int cvor, btree *stablo) {
     if(stablo->elements[cvor].used == 0 || stablo->elements[2*cvor].used == 1) {
           cout << "Greska, zadani cvor ne postoji, ili nejgovo dijete vec postoji\n" << endl << endl;
           return;
     }
     stablo->elements[2*cvor].used = 1;
     stablo->elements[2*cvor].label = label;
}

void CreateRightB(string label, int cvor, btree *stablo) {
        if(stablo->elements[cvor].used == 0 || stablo->elements[2*cvor+1].used == 1)
        {
        cout << "Greska, zadani cvor ne postoji, ili nejgovo dijete vec postoji\n" << endl << endl;
           return;
    }
    stablo->elements[2*cvor+1].used = 1;
     stablo->elements[2*cvor+1].label = label;
}

void DeleteB(int cvor, btree *stablo) {
    stablo->elements[cvor].used = 0;
        if (LeftChildB(cvor, stablo)) 
        DeleteB(LeftChildB(cvor, stablo), stablo);
        if (RightChildB(cvor, stablo)) DeleteB(RightChildB(cvor, stablo), stablo);
}

void InitB(string label, btree* stablo) {
    stablo->elements[1].label = label;
    stablo->elements[1].used = 1;
}

Initial URL


Initial Description
binarno stablo uz pomoc polja

Initial Title
Strukture stabla

Initial Tags
podataka

Initial Language
C++