Posted By

ivan_uzarevic on 01/19/15


Tagged

data tree structures binary programming pointers Algorithms c++ informatics


Versions (?)

bstablo_pokazivaci.h


 / Published in: C++
 

Zaglavlje sa funkcijama, izvedenih pomoću pokazivača, za rad sa binarnim stablom

  1. #ifndef bstablo_polje
  2. #define bstablo_polje
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. struct bstablo {
  8. int labela;
  9. bstablo *lijevo, *desno;
  10. };
  11.  
  12. typedef bstablo *vrijed;
  13. bstablo *stablo = new bstablo;
  14.  
  15. vrijed parentB (vrijed poz, bstablo *stablo) {
  16. static bstablo *prvi = NULL;
  17. static bstablo *drugi = NULL;
  18. if (stablo->lijevo == poz || stablo->desno == poz)
  19. return stablo;
  20. if (stablo->lijevo != NULL)
  21. prvi = parentB (poz, stablo->lijevo);
  22. if (stablo->desno != NULL)
  23. drugi = parentB (poz,stablo->desno);
  24. if (prvi != NULL)
  25. return prvi;
  26. if (drugi != NULL)
  27. return drugi;
  28. return NULL;
  29. }
  30.  
  31. vrijed leftchildB(vrijed poz, bstablo *stablo) {
  32. return poz->lijevo;
  33. }
  34.  
  35. vrijed rightchildB(vrijed poz, bstablo *stablo) {
  36. return poz->desno;
  37. }
  38.  
  39. int labelB (vrijed poz, vrijed stablo) {
  40. if (poz != NULL)
  41. return poz->labela;
  42. }
  43.  
  44. void changelabelB(int x, vrijed poz, bstablo *stablo) {
  45. if (poz != NULL)
  46. poz->labela = x;
  47. }
  48.  
  49. vrijed rootB (bstablo *stablo) {
  50. return stablo;
  51. }
  52.  
  53. void createleftB (int x, vrijed poz, bstablo *stablo) {
  54. if (poz->lijevo != NULL) {
  55. cout << "Lijevo dijete vec postoji" << endl;
  56. return;
  57. }
  58. if (poz == NULL) {
  59. cout << "Cvor kojem zelite dodati dijete ne postoji" << endl;
  60. return;
  61. }
  62.  
  63. poz->lijevo = new bstablo;
  64. poz->lijevo->labela = x;
  65. poz->lijevo->lijevo = NULL;
  66. poz->lijevo->desno = NULL;
  67. }
  68.  
  69. void createrightB (int x, vrijed poz, bstablo *stablo) {
  70. if (poz->desno) {
  71. cout << "Desno dijete vec postoji" << endl;
  72. return;
  73. }
  74. if (poz == NULL) {
  75. cout << "Cvor kojem zelite dodati dijete ne postoji" << endl;
  76. return;
  77. }
  78. poz->desno = new bstablo;
  79. poz->desno->labela = x;
  80. poz->desno->lijevo = NULL;
  81. poz->desno->desno = NULL;
  82. }
  83.  
  84. void deleteB (vrijed poz, bstablo *stablo) {
  85. bstablo *roditelj = parentB (poz, stablo);
  86. if (roditelj->lijevo == poz)
  87. roditelj->lijevo = NULL;
  88. else
  89. roditelj->desno = NULL;
  90.  
  91. if (poz->lijevo)
  92. deleteB (poz->lijevo, stablo);
  93. if (poz->desno)
  94. deleteB (poz->desno, stablo);
  95. delete poz;
  96. };
  97.  
  98. void initB (int x, bstablo *stablo) {
  99. stablo->lijevo = NULL;
  100. stablo->desno = NULL;
  101. stablo->labela = x;
  102. }
  103.  
  104. int provjera (vrijed poz) {
  105. if (poz != NULL)
  106. return 1;
  107. else
  108. return 0;
  109. }
  110.  
  111. #endif

Report this snippet  

You need to login to post a comment.