Posted By


brumihali on 01/19/15

Tagged


Statistics


Viewed 48 times
Favorited by 0 user(s)

p_dijete_s_brat.h


/ Published in: C++
Save to your folder(s)

Općenito stablo - prvo dijete sljedeći brat.


Copy this code and paste it in your HTML
  1. struct element{
  2. char sadrzaj;
  3. int p_dijete, s_brat;
  4. };
  5.  
  6. struct tr{
  7. element broj[10000];
  8. int prvi;
  9. };
  10.  
  11. tr *InitT(int x, tr *T){
  12. T = new tr;
  13. for(int i=0; i<10000; i++){
  14. T->broj[i].sadrzaj = '0';
  15. T->broj[i].p_dijete = -1;
  16. T->broj[i].s_brat = -1;
  17. }
  18. T->broj[x].sadrzaj = 'A';
  19. T->prvi = x;
  20. return T;
  21. }
  22.  
  23. int RootT(tr *T){
  24. return T->prvi;
  25. }
  26.  
  27. int ParentT(int n, tr *T){
  28. if(RootT(T) == n) return -1;
  29. for(int i=0; i<10000; i++){
  30. if(T->broj[i].p_dijete == n) return i;
  31. }
  32. }
  33.  
  34. int FirstChildT(int n, tr *T){
  35. return T->broj[n].p_dijete;
  36. }
  37.  
  38. int NextSiblingT(int n, tr *T){
  39. return T->broj[n].s_brat;
  40. }
  41.  
  42. char LabelT(int n, tr *T){
  43. return T->broj[n].sadrzaj;
  44. }
  45.  
  46. void ChangeLabelT(char x, int n, tr *T){
  47. T->broj[n].sadrzaj = x;
  48. }
  49.  
  50. void CreateT(int x, int n, tr *T){
  51. if(LabelT(x, T) != '0'){
  52. cout <<"Vrijednost vec postoji u stablu!"<<endl;
  53. return;
  54. }
  55. if(LabelT(n, T) == '0'){
  56. cout << "Cvor ne postoji u stablu!"<<endl;
  57. return;
  58. }
  59. if(FirstChildT(n, T) == -1) T->broj[n].p_dijete = x;
  60. else if(NextSiblingT(FirstChildT(n, T), T) == -1) T->broj[FirstChildT(n, T)].s_brat = x;
  61. else{
  62. n = FirstChildT(n, T);
  63. while(NextSiblingT(n, T) != -1) n = NextSiblingT(n, T);
  64. T->broj[n].s_brat = x;
  65. }
  66. T->broj[x].p_dijete = -1;
  67. T->broj[x].s_brat = -1;
  68. T->broj[x].sadrzaj = T->broj[n].sadrzaj+1;
  69. }
  70.  
  71. void DeleteT (int n, tr *T) {
  72. int pom;
  73. if (FirstChildT(n,T)!=-1) {
  74. pom = FirstChildT(n,T);
  75. DeleteT(pom,T);
  76. while (NextSiblingT(pom,T)!=-1) {
  77. pom = NextSiblingT(pom,T);
  78. DeleteT(pom,T);
  79. }
  80. }
  81. T->broj[n].sadrzaj = -1;
  82. if (n != RootT(T) && FirstChildT(ParentT(n,T), T)==n)
  83. T->broj[ParentT(n, T)].p_dijete = NextSiblingT(n,T);
  84. else if (n != RootT(T)) {
  85. pom = FirstChildT(ParentT(n,T),T);
  86. while (NextSiblingT(pom,T) != n)
  87. pom = NextSiblingT(pom,T);
  88. T->broj[pom].s_brat = NextSiblingT(n,T);
  89. }
  90. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.