Posted By

vangogh94 on 01/21/15


Tagged

Strukture pokazivaci binarno stablo podatak


Versions (?)

binStablo_pokazivaci.h


 / Published in: C++
 

Biblioteka sa funkcijama za rad sa binarnim stablom realizirano preko pokazivača

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct bStabloStrukt {//stablo ^^
  5. int data;
  6. bStabloStrukt *L,*D;
  7. bStabloStrukt():L(NULL),D(NULL){}
  8. };
  9. typedef bStabloStrukt* elem;
  10. typedef bStabloStrukt* cvorStrukt;
  11. typedef bStabloStrukt* cvor;
  12. cvorStrukt ParentB(elem trazi, bStabloStrukt *binStablo){
  13. static elem pamti;
  14. static elem glava=binStablo;
  15. if(trazi==glava) return NULL;//ako trazimo roditelja za glavu vracamo nulu odma
  16.  
  17. if(binStablo->L!=NULL) //krecemo se lijevo
  18. ParentB(trazi, binStablo->L);
  19. if(binStablo->D!=NULL)//krecemo se desno
  20. ParentB(trazi, binStablo->D);
  21.  
  22. if(binStablo->D==trazi||binStablo->L==trazi)//ako smo naisli na element pamtimo ga u staticku
  23. pamti= binStablo;
  24. return pamti;//vracamo staticku kroz sve rek pozive
  25. }
  26.  
  27.  
  28. cvorStrukt LeftChildB(elem trazi, bStabloStrukt *binStablo){
  29. return trazi->L;
  30. }
  31.  
  32. cvorStrukt RightChildB(elem trazi, bStabloStrukt *binStablo){
  33. return trazi->D;
  34. }
  35.  
  36. int LabelB(elem trazi, bStabloStrukt *binStablo){
  37. return trazi->data;
  38. }
  39.  
  40. void ChangeLabelB(int unos, elem trazi, bStabloStrukt *binStablo){
  41. trazi->data=unos;
  42. }
  43.  
  44. cvorStrukt RootB(bStabloStrukt *binStablo){
  45. return binStablo;
  46. }
  47.  
  48. bool CreateLeftB(int unos, elem trazi, bStabloStrukt *binStablo){
  49. if(trazi==NULL||trazi->L!=NULL)
  50. return false;
  51. trazi->L=new bStabloStrukt;
  52. trazi->L->data=unos;
  53. return true;
  54. }
  55.  
  56. bool CreateRightB(int unos, elem trazi, bStabloStrukt* binStablo){
  57. if(trazi==NULL||trazi->D!=NULL)
  58. return false;
  59. trazi->D=new bStabloStrukt;
  60. trazi->D->data=unos;
  61. return true;
  62. }
  63.  
  64. void InitB(int unos, bStabloStrukt *&binStablo){
  65. binStablo=new bStabloStrukt;
  66. binStablo->data=unos;
  67. }
  68.  
  69.  
  70. void DeleteB(elem trazi, bStabloStrukt *binStablo){
  71. if(trazi==NULL) return;
  72. if(trazi->L!=NULL)
  73. DeleteB(trazi->L, binStablo);
  74. if(trazi->D!=NULL)
  75. DeleteB(trazi->D, binStablo);
  76. if(trazi!=RootB(binStablo)&&ParentB(trazi, binStablo)->L==trazi)
  77. ParentB(trazi,binStablo)->L=NULL;
  78. else if(trazi!=RootB(binStablo))
  79. ParentB(trazi,binStablo)->D=NULL;
  80. delete trazi;
  81. }

Report this snippet  

You need to login to post a comment.