Posted By

kgrlic on 01/19/15


Tagged

test


Versions (?)

binarno_pokazivaci.h


 / Published in: C++
 

test

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct st_ELEM{
  5. int label;
  6. st_ELEM *lijevo,*desno;
  7. };
  8.  
  9. st_ELEM *INIT_B(int n,st_ELEM *T){
  10. T = new st_ELEM;
  11. T->lijevo = T->desno = NULL;
  12. T->label = n;
  13. return T;
  14. }
  15.  
  16. st_ELEM *ROOT_B(st_ELEM *T){
  17. return T;
  18. }
  19.  
  20. void CHANGE_LABEL_B(int x,st_ELEM *T){
  21. T->label = x;
  22. }
  23.  
  24. st_ELEM *PARENT_B(int n,st_ELEM *T){
  25. if(T->label==n) return NULL;
  26. if(T->lijevo){
  27. if(T->lijevo->label==n) return T;
  28. PARENT_B(n,T->lijevo);
  29. }
  30. if(T->desno){
  31. if(T->desno->label==n) return T;
  32. PARENT_B(n,T->desno);
  33. }
  34. }
  35.  
  36. st_ELEM *LEFT_CHILD_B(st_ELEM *T){
  37. return T->lijevo;
  38. }
  39.  
  40. st_ELEM *RIGHT_CHILD_B(st_ELEM *T){
  41. return T->desno;
  42. }
  43.  
  44. int LABEL_B(st_ELEM *T){
  45. return T->label;
  46. }
  47.  
  48. void CREATE_LEFT_B(int x, st_ELEM *T){
  49. if(T->lijevo) cout << "Vec postoji!" << endl;
  50. else{
  51. st_ELEM *novi = new st_ELEM;
  52. novi->label = x;
  53. novi->lijevo = NULL;
  54. novi->desno = NULL;
  55. T->lijevo = novi;
  56. }
  57. }
  58.  
  59. void CREATE_RIGHT_B(int x,st_ELEM *T){
  60. if(T->desno) cout << "Vec postoji!" << endl;
  61. else{
  62. st_ELEM *novi = new st_ELEM;
  63. novi->label = x;
  64. novi->lijevo = NULL;
  65. novi->desno = NULL;
  66. T->desno = novi;
  67. }
  68. }
  69.  
  70. void DELETE_B(st_ELEM *P,st_ELEM *T){
  71. st_ELEM *erase = P,*roditelj = PARENT_B(P->label,T);
  72. if(roditelj->lijevo==P) roditelj->lijevo = NULL;
  73. else roditelj->desno = NULL;
  74. if(P->lijevo) DELETE_B(P->lijevo,T);
  75. if(P->desno) DELETE_B(P->desno,T);
  76. delete erase;
  77. }

Report this snippet  

You need to login to post a comment.