Posted By

zeko868 on 01/20/15


Tagged

binarno stabloimplementacijapokazivac


Versions (?)

bs_pokazivac.h


 / Published in: C++
 

Header kojeg koristi glavni dio programa, a sadrži implementacijske funkcije za korištenje binarnog stabla (uz pomoć pokazivača)

  1. #include <iostream>
  2. using namespace std;
  3. struct tbstablo {
  4. int vrijednost;
  5. tbstablo *lijevo,*desno;
  6. };
  7.  
  8. tbstablo* ParentB(tbstablo *cvor,tbstablo *stablo) {
  9. static tbstablo *povrat=NULL;
  10. if (povrat!=NULL)
  11. povrat=NULL;
  12. if (stablo->lijevo==cvor || stablo->desno==cvor)
  13. return povrat=stablo;
  14. else {
  15. if (stablo->lijevo!=NULL)
  16. ParentB(cvor,stablo->lijevo);
  17. if (stablo->desno!=NULL)
  18. ParentB(cvor,stablo->desno);
  19. return povrat;
  20. }
  21. }
  22. tbstablo* LeftChildB(tbstablo *cvor,tbstablo *stablo) {
  23. return cvor->lijevo;
  24. }
  25. tbstablo* RightChildB(tbstablo *cvor,tbstablo *stablo) {
  26. return cvor->desno;
  27. }
  28. int LabelB(tbstablo *cvor,tbstablo *stablo) {
  29. return cvor->vrijednost;
  30. }
  31. void ChangeLabelB(int nova_vrijednost,tbstablo *cvor,tbstablo *stablo) {
  32. cvor->vrijednost=nova_vrijednost;
  33. }
  34. tbstablo*& RootB(tbstablo *&stablo) {
  35. return stablo;
  36. }
  37. void CreateLeftB(int dijete_vrijednost,tbstablo *cvor,tbstablo *stablo) {
  38. if (cvor->lijevo==NULL) {
  39. cvor->lijevo=new tbstablo;
  40. cvor->lijevo->vrijednost=dijete_vrijednost;
  41. cvor->lijevo->lijevo=NULL;
  42. cvor->lijevo->desno=NULL;
  43. }
  44. else
  45. cerr<<"Greska! (lijevo dijete cvora na trazenoj lokaciji vec postoji)"<<endl;
  46. }
  47. void CreateRightB(int dijete_vrijednost,tbstablo *cvor,tbstablo *stablo) {
  48. if (cvor->desno==NULL) {
  49. cvor->desno=new tbstablo;
  50. cvor->desno->vrijednost=dijete_vrijednost;
  51. cvor->desno->lijevo=NULL;
  52. cvor->desno->desno=NULL;
  53. }
  54. else
  55. cerr<<"Greska! (lijevo dijete cvora na trazenoj lokaciji vec postoji)"<<endl;
  56. }
  57. void DeleteB(tbstablo *&cvor,tbstablo *stablo) {
  58. if (cvor->lijevo!=NULL)
  59. DeleteB(cvor->lijevo,stablo);
  60. if (cvor->desno!=NULL)
  61. DeleteB(cvor->desno,stablo);
  62. delete cvor;
  63. cvor=NULL;
  64. return;
  65. }
  66. void InitB(int korijen_vrijednost,tbstablo *&stablo) {
  67. stablo=new tbstablo;
  68. stablo->vrijednost=korijen_vrijednost;
  69. stablo->lijevo=NULL;
  70. stablo->desno=NULL;
  71. }
  72. bool ExistsLeftChild (tbstablo *cvor,tbstablo *stablo) {
  73. if (cvor->lijevo==NULL)
  74. return false;
  75. return true;
  76. }
  77. bool ExistsRightChild (tbstablo *cvor,tbstablo *stablo) {
  78. if (cvor->desno==NULL)
  79. return false;
  80. return true;
  81. }
  82. typedef tbstablo* tbinarno;
  83. typedef tbstablo* tcvor;
  84. typedef tbstablo*& rcvor;

Report this snippet  

You need to login to post a comment.