Posted By

cherryfreya on 01/13/14


Tagged

InitB RootB ChangeLabelB ParentB LeftChildB RightChildB LabelB CreateLeftB CreateRightB DeleteB


Versions (?)

biblioteka_polje_pokazivac


 / Published in: C++
 

Ovo je biblioteka u kojoj se nalaze funkcije vezane uz implementaciju funkcija stabla pomoću pokazivača, a koje se koriste u programu glavni_program. Funkcije su: InitB (inicijalizira stablo s korijenom), RootB (vraća korijen), ChangeLabelB(mijenja oznaku nekog čvora u stablu), ParentB(vraća roditelja nekog čvora), LeftChildB(vraća lijevo dijete nekog čvora), RightChildB(vraća desno dijete nekog čvora), LabelB(vraća vrijednost čvora), CreateLeftB(dodaje lijevo dijete nekom čvoru), CreateRightB(dodaje desno dijete nekom čvoru), DeleteB(briše čvor i njegove potomke).

  1. #include<iostream>
  2. using namespace std;
  3.  
  4. struct element{
  5. int label;
  6. element *lijevo, *desno;
  7. };
  8.  
  9. element *InitB(int n, element *S){
  10. S = new element;
  11. S->lijevo = S->desno = NULL;
  12. S->label = n;
  13. return S;
  14. }
  15.  
  16. element *RootB(element *S){
  17. return S;
  18. }
  19.  
  20. void ChangeLabelB(int x, element *S){
  21. S->label = x;
  22. }
  23.  
  24. element *ParentB(int n, element *S){
  25. if(S->label==n)
  26. return NULL;
  27. if(S->lijevo){
  28. if(S->lijevo->label==n)
  29. return S;
  30. ParentB(n,S->lijevo);
  31. }
  32. if(S->desno){
  33. if(S->desno->label==n)
  34. return S;
  35. ParentB(n,S->desno);
  36. }
  37. }
  38.  
  39. element *LeftChildB(element *S){
  40. return S->lijevo;
  41. }
  42.  
  43. element *RightChildB(element *S){
  44. return S->desno;
  45. }
  46.  
  47. int LabelB(element *S){
  48. return S->label;
  49. }
  50.  
  51. void CreateLeftB(int x, element *S){
  52. if(S->lijevo)
  53. cout << "Lijevi cvor vec postoji" << endl;
  54. else{
  55. element *novi = new element;
  56. novi->label = x;
  57. novi->lijevo = NULL;
  58. novi->desno = NULL;
  59. S->lijevo = novi;
  60. }
  61. }
  62.  
  63. void CreateRightB(int x, element *S){
  64. if(S->desno)
  65. cout << "Desni cvor vec postoji" << endl;
  66. else{
  67. element *novi = new element;
  68. novi->label = x;
  69. novi->lijevo = NULL;
  70. novi->desno = NULL;
  71. S->desno = novi;
  72. }
  73. }
  74.  
  75. void DeleteB(element *P, element *S){
  76. element *brisi = P, *roditelj = ParentB(P->label, S);
  77. if(roditelj->lijevo == P)
  78. roditelj->lijevo = NULL;
  79. else
  80. roditelj->desno = NULL;
  81. if(P->lijevo)
  82. DeleteB(P->lijevo, S);
  83. if(P->desno)
  84. DeleteB(P->desno, S);
  85. delete brisi;
  86. }

Report this snippet  

You need to login to post a comment.