/ Published in: C++
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#define N 10000 struct element { char labela[20]; int used; }; struct bt { element polje[N]; }; int ParentB (int p, bt* stablo) { if (stablo->polje[p].used == 0) return -1; if (p & 1) return (p - 1) / 2; else return p / 2;} int RootB (bt* stablo) { if (stablo->polje[1].used) return 1; else return 0;} int LeftChildB (int p, bt* stablo) { if ((stablo->polje[p * 2]).used) return p * 2; return -1;} int RightChildB (int p, bt* stablo) { if ((stablo->polje[p * 2 + 1]).used) return p * 2 + 1; return -1;} void DeleteB (int p, bt* stablo) { if (stablo->polje[p*2].used) DeleteB(p*2, stablo); stablo->polje[p].used ^= stablo->polje[p].used; if (stablo->polje[p*2+1].used) DeleteB(p*2+1, stablo);} void InitB (char* label, bt* stablo) { if ((stablo->polje[1]).used) { DeleteB(1, stablo); (stablo->polje[1]).used = 1; strcpy((stablo->polje[1].labela), label); } else { (stablo->polje[1]).used = 1; strcpy((stablo->polje[1].labela), label);}} char* LabelB(int p, bt* stablo) { if (stablo->polje[p].used) return stablo->polje[p].labela; return 0;} void ChangeLabelB (char* label, int p, bt* stablo) { if (stablo->polje[p].used) strcpy(stablo->polje[p].labela, label);} void CreateLeftB (char* label, int p, bt* stablo) { if (! stablo->polje[p*2].used && stablo->polje[p].used) { stablo->polje[p*2].used = 1; strcpy(stablo->polje[p*2].labela, label);}} void CreateRightB (char* label, int p, bt* stablo) { if (! stablo->polje[p*2+1].used && stablo->polje[p].used) { stablo->polje[p*2+1].used = 1; strcpy(stablo->polje[p*2+1].labela, label);}}1