Return to Snippet

Revision: 38433
at January 3, 2011 02:08 by ivahorvat


Initial Code
struct el {
       int oz;
       int kor;
};

struct z {
       el elementi[5000];
};

typedef int cvor;

cvor ParentB(cvor br, z* I) {
     if(br == 1) return 0;
     if(br%2) br--;
     return br/2;
}

cvor LeftChildB(cvor br, z* I) {
     if(I->elementi[br].kor == 0) 
           return 0;
     if(I->elementi[2*br].kor == 1) 
           return 2*br;
     else return 0;
}

cvor RightChildB(cvor br, z* I) {
     if(I->elementi[br].kor == 0) return 0;
     if(I->elementi[2*br+1].kor == 1) return 2*br+1;
     else return 0;
}

int LabelB(cvor br, z* I) {
          return I->elementi[br].oz;
}


void ChangeLabelB(int v, cvor br, z* I) {
     if(I->elementi[br].kor == 0) return;
     I->elementi[br].oz = v;
}

cvor RootB(z* I) {
     if(I->elementi[1].kor == 0) return 0;
     return 1;
}

void CreateLeftB(int v, cvor br, z* I) {
     if(I->elementi[br].kor == 0 || I->elementi[2*br].kor == 1) {
           cout << "Doslo je do pogreske!!" << endl << endl;
           return;
     }
     I->elementi[2*br].kor = 1;
     I->elementi[2*br].oz = v;
}

void CreateRightB(int v, cvor br, z* I) {
        if(I->elementi[br].kor == 0 || I->elementi[2*br+1].kor == 1)
        {
        cout << "Doslo je do pogreske!!" << endl << endl;
        return;
    }
    I->elementi[2*br+1].kor = 1;
    I->elementi[2*br+1].oz = v;
}

void DeleteB(cvor br, z* I) {
    I->elementi[br].kor = 0;
        if (LeftChildB(br, I)) DeleteB(LeftChildB(br, I), I);
        if (RightChildB(br, I)) DeleteB(RightChildB(br, I), I);
}

z* InitB(int v, z* I) {
    if(I) delete I;
    I = new z;
    for(int i = 0; i < 5000; i++)
        I->elementi[i].kor = 0;
    I->elementi[1].oz = v;
    I->elementi[1].kor = 1; 
    return I;
}

Initial URL


Initial Description


Initial Title
bstablo_polje.h

Initial Tags
podataka

Initial Language
C++