/ Published in: C++
Biblioteka sa funkcijama za rad sa stablom pomoću polja
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> using namespace std; typedef int cvor; struct cvorStrukt{ cvor data; bool used; cvorStrukt(): used(false){} }; typedef cvorStrukt elem; struct bStabloStrukt { cvorStrukt polje [10000]; }; cvor ParentB(cvor indeks, bStabloStrukt *binStablo){ if(indeks==1||binStablo->polje[indeks].used==false) return 0; else return indeks/2; } cvor LeftChildB(cvor indeks, bStabloStrukt *binStablo){ if(binStablo->polje[indeks*2].used==false) return 0; else return indeks*2; } cvor RightChildB(cvor indeks, bStabloStrukt *binStablo){ if(binStablo->polje[indeks*2+1].used==false) return 0; else return indeks*2+1; } cvor LabelB(short indeks, bStabloStrukt *binStablo){ return binStablo->polje[indeks].data; } void ChangeLabelB(cvor unos, short indeks, bStabloStrukt *binStablo){ if(binStablo->polje[indeks].used==false) return; else binStablo->polje[indeks].data=unos; } cvor RootB(bStabloStrukt *binStablo){ return 1; } bool CreateLeftB(cvor unos, short indeks, bStabloStrukt *binStablo){ if(binStablo->polje[indeks*2].used==true) return false; binStablo->polje[indeks*2].used=true; binStablo->polje[indeks*2].data=unos; return true; } bool CreateRightB(cvor unos, short indeks, bStabloStrukt *binStablo){ if(binStablo->polje[indeks*2+1].used==true) return false; binStablo->polje[indeks*2+1].used=true; binStablo->polje[indeks*2+1].data=unos; return true; } void DeleteB(short indeks, bStabloStrukt *binStablo){ if(LeftChildB(indeks, binStablo)==true) //krećemo se lijevom stranom poÄevÅ¡i od cvora za brisanje DeleteB(indeks*2, binStablo); if(RightChildB(indeks, binStablo)==true)//krecemo se desnom stranom DeleteB(indeks*2+1, binStablo); binStablo->polje[indeks].used=false; } void InitB(cvor unos, bStabloStrukt *&binStablo){ binStablo=new bStabloStrukt; binStablo->polje[1].used=true; binStablo->polje[1].data=unos; }