Posted By

igradeca on 01/19/15


Tagged

header array tree binary polje dijete potomak korijen roditelj cvor


Versions (?)

bin_polje.h


 / Published in: C++
 

Datoteka zaglavlja za "main_drvo.cpp" iz kolegija Strukture podataka, zadaća 4. Funkcije za rad nad binarnim stablom pomoću polja.

  1. struct element{
  2. int label;
  3. bool used;
  4. };
  5.  
  6. struct bdrvo{
  7. element polje[1000];
  8. };
  9.  
  10. bdrvo *InitB(int x, bdrvo *T){
  11.  
  12. T= new bdrvo;
  13. for(int i= 0; i < 1000; i++){
  14. T-> polje[i].used= 0;
  15. }
  16.  
  17. T-> polje[1].used= 1;
  18. T-> polje[1].label= x;
  19. return T;
  20. }
  21.  
  22. int ParentB(int n, bdrvo *T){
  23.  
  24. if(T-> polje[1].label== n) return 0;
  25. if(n%2) return n/2+1;
  26. else return n/2;
  27. }
  28.  
  29. int LeftChildB(int n, bdrvo *T){
  30. return 2*n;
  31. }
  32.  
  33. int RightChildB(int n, bdrvo *T){
  34. return 2*n+1;
  35. }
  36.  
  37. int LabelB(int n, bdrvo *T){
  38. return T-> polje[n].label;
  39. }
  40.  
  41. void ChangeLabelB(int x, int n, bdrvo *T){
  42. T-> polje[n].label= x;
  43. }
  44.  
  45. int RootB(bdrvo *T){
  46. return T-> polje[1].label;
  47. }
  48.  
  49. void CreateLeftB(int x, int n, bdrvo *T){
  50. if(T-> polje[2*n].used) return;
  51.  
  52. T-> polje[2*n].label = x;
  53. T-> polje[2*n].used = 1;
  54. }
  55.  
  56. void CreateRightB(int x, int n, bdrvo *T){
  57. if(T-> polje[2*n+1].used) return;
  58.  
  59. T-> polje[2*n+1].label = x;
  60. T-> polje[2*n+1].used = 1;
  61. }
  62.  
  63. void DeleteB(int n, bdrvo *T){
  64. if(n== 1 || n >= 10000) return;
  65. if(T-> polje[LeftChildB(n,T)].used) DeleteB(2*n, T);
  66. if(T-> polje[RightChildB(n,T)].used) DeleteB(2*n-1, T);
  67. T-> polje[n].used= 0;
  68. }

Report this snippet  

You need to login to post a comment.