Posted By

igradeca on 01/19/15


Tagged

list main tree abstract dijete potomak korijen roditelj cvor


Versions (?)

main_drvo


 / Published in: C++
 

Glavni programski kod za Zadatak 4 iz kolegija Strukture Podataka.

  1. #include <iostream>
  2. #include <ctime>
  3. #include "operacije_stablo.h"
  4. #include "algoritmi_stabla.h"
  5. #include "bin_pokazivac.h"
  6. #include "bin_polje.h"
  7.  
  8. using namespace std;
  9.  
  10. int biraj2;
  11.  
  12. void opcenito_stablo(){
  13.  
  14. cout << endl;
  15.  
  16. cout << "Inicijalizacija stabla." << endl << endl;
  17. int korijen= rand()%100;
  18. drvo *T= InitT(korijen, T);
  19. cout << "Korijen stabla: " << RootT(T) << endl << endl;
  20.  
  21. int a= rand()%100;
  22. int b= rand()%100;
  23. int c= rand()%100;
  24. int d= rand()%100;
  25. int e= rand()%100;
  26. cout << "Stvaranje potomaka korijenu." << endl << endl;
  27. CreateT(a, korijen, T);
  28. CreateT(b, korijen, T);
  29. CreateT(c, korijen, T);
  30. cout << "Stvaranje potomaka cvoru " << b << "." << endl << endl;
  31. CreateT(d, b, T);
  32. CreateT(e, b, T);
  33.  
  34. cout << "Prvo dijete cvora " << RootT(T) << ": " << FirstChildT(RootT(T), T) << endl << endl;
  35.  
  36. cout << "Braca cvora " << FirstChildT(RootT(T),T) << ": "
  37. << NextSiblingT(FirstChildT(RootT(T),T),T) << ", "
  38. << NextSiblingT(NextSiblingT(FirstChildT(RootT(T),T),T),T) << endl << endl;
  39.  
  40. cout << "Roditelj cvora " << c << ": " << ParentT(c, T) << endl << endl;
  41.  
  42. cout << "Ispis oznake cvora " << d << ": " << LabelT(d, T) << endl << endl;
  43.  
  44. cout << "Mijenjanje oznake cvoru " << d << "." << endl << endl;
  45. ChangeLabelT('x', d, T);
  46.  
  47. cout << "Nova oznaka cvora " << d << ": " << LabelT(d, T) << endl << endl;
  48.  
  49. cout << "Brisanje potomka " << e << " od cvora " << b << ". " << endl << endl;
  50. DeleteT(e, T);
  51.  
  52. do{
  53. cout << "Odaberite obilazak stabla" << endl << "--------------------------" << endl;
  54. cout << "1. PreOrder" << endl;
  55. cout << "2. InOrder" << endl;
  56. cout << "3. PostOrder" << endl;
  57. cin >> biraj2;
  58. }while(biraj2 < 1 || biraj2 > 3);
  59.  
  60. switch(biraj2){
  61. case 1: PreOrder(T); break;
  62. case 2: InOrder(T); break;
  63. case 3: PostOrder(T); break;
  64. }
  65.  
  66. cout << endl;
  67.  
  68. }
  69.  
  70. void binarno_stablo_polje(){
  71.  
  72. cout << endl;
  73.  
  74. cout << "Inicijalizacija binarnog stabla." << endl << endl;
  75. int korijen= rand()%100;
  76. bdrvo *T = InitB(korijen, T);
  77. cout << "Korijen binarnog stabla: " << RootB(T) << endl << endl;
  78.  
  79. cout << "Stvaranje potomaka korijenu." << endl << endl;
  80. CreateLeftB(rand()%100, korijen, T);
  81. CreateRightB(rand()%100, korijen, T);
  82.  
  83. cout << "Lijevo dijete korijena: " << LabelB(LeftChildB(korijen, T), T) << endl;
  84. cout << "Desno dijete korijena: " << LabelB(RightChildB(korijen, T), T) << endl << endl;
  85. CreateLeftB(rand()%100, LeftChildB(korijen, T), T);
  86. CreateRightB(rand()%100, LeftChildB(korijen, T), T);
  87.  
  88. cout << "Roditelj cvora " << LeftChildB(korijen, T) << ": "
  89. << ParentB(LeftChildB(korijen, T), T) << endl << endl;
  90.  
  91. cout << "Brisanje cvora " << RightChildB(korijen, T) << "." << endl << endl;
  92. DeleteB(RightChildB(korijen, T), T);
  93.  
  94. cout << "Mijenjanje oznake cvoru " << LeftChildB(korijen, T) << "." << endl << endl;
  95. ChangeLabelB('x', LeftChildB(korijen, T), T);
  96.  
  97. cout << "Nova oznaka cvora " << LeftChildB(korijen, T) << ": "
  98. << LabelB(LeftChildB(korijen, T), T) << endl;
  99.  
  100. }
  101.  
  102. void binarno_stablo_pokazivac(){
  103.  
  104. cout << endl;
  105.  
  106. cout << "Inicijalizacija binarnog stabla." << endl << endl;
  107. int korijen= rand()%100;
  108. pelement *T = InitB(korijen, T);
  109. cout << "Korijen binarnog stabla: " << LabelB(RootB(T)) << endl << endl;
  110.  
  111. cout << "Stvaranje potomaka korijenu." << endl << endl;
  112. CreateLeftB(rand()%100, T);
  113. CreateRightB(rand()%100, T);
  114.  
  115. cout << "Lijevo dijete korijena: " << LabelB(LeftChildB(RootB(T))) << endl;
  116. cout << "Desno dijete korijena: " << LabelB(RightChildB(RootB(T))) << endl << endl;
  117. CreateLeftB(rand()%100, T);
  118. CreateRightB(rand()%100, T);
  119.  
  120. cout << "Roditelj cvora " << LabelB(LeftChildB(T)) << ": "
  121. << LabelB(ParentB(LabelB(LeftChildB(T)), T)) << endl << endl;
  122.  
  123. cout << "Mijenjanje oznake korijena." << endl << endl;
  124. ChangeLabelB('x', RootB(T));
  125.  
  126. cout << "Nova oznaka korijena: " << LabelB(RootB(T)) << endl << endl;
  127.  
  128. cout << "Brisanje stabla." << endl;
  129. DeleteB(RootB(T),RootB(T));
  130. }
  131.  
  132. int main(){
  133.  
  134. int biraj;
  135. srand(time(0));
  136.  
  137. cout << endl;
  138. do{
  139. cout << " Glavni izbornik" << endl << "=================" << endl;
  140. cout << "1. Opcenito stablo" << endl;
  141. cout << "2. Binarno stablo- polje" << endl;
  142. cout << "3. Binarno stablo- pokazivac" << endl;
  143. cout << "9. Izlaz iz programa" << endl;
  144. cin >> biraj;
  145.  
  146. switch(biraj){
  147. case 1: opcenito_stablo(); break;
  148. case 2: binarno_stablo_polje(); break;
  149. case 3: binarno_stablo_pokazivac(); break;
  150. }
  151.  
  152. cout << endl;
  153. }while(biraj!= 9);
  154.  
  155. return 0;
  156. }

Report this snippet  

You need to login to post a comment.