Posted By

igotepava on 01/18/15


Tagged

data sort tree structures binary algorithm searching sorting heap AVL BTS


Versions (?)

main.cpp


 / Published in: C++
 

Zadatak 4 iz kolegija Strukture podataka

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. #include "opcenito_stablo.h"
  5. #include "ophodnja_stabla.h"
  6. #include "binarno_stablo_polje.h"
  7. #include "binarno_stablo_pokazivac.h"
  8. #include "binarno_stablo_pretrazivanja.h"
  9. #include "hrpa.h"
  10.  
  11. void OT_stanje(tr *OT){
  12. cout << "Stanje u stablu\n";
  13. cout << "---------------------------------------------------------------------\n";
  14. cout << "Vrijednost\tOznaka\tPrvo dijete\tSljedeci brat\n";
  15. cout << "---------------------------------------------------------------------\n";
  16. for(int i=0; i<10000; i++){
  17. if(LabelT(i, OT) != '0') cout << i << "\t\t" << LabelT(i, OT) << "\t" << FirstChildT(i, OT) << "\t\t" << NextSiblingT(i, OT) << endl;
  18. }
  19. }
  20.  
  21. void opcenito(){
  22. tr *OT;
  23. int n, iz, k, x;
  24. cout << "Unesite korijen stabla: ";
  25. cin >> n;
  26. OT = InitT(n, OT);
  27. do{
  28. cout << "\nOdaberite:\n";
  29. cout << "---------------------------------------------------------------------\n";
  30. cout << "1. Dodavanje novog djeteta na neki cvor\n";
  31. cout << "2. Brisanje cvora\n";
  32. cout << "3. Stanje u stablu\n";
  33. cout << "4. Ophodnja stabla\n";
  34. cout << "9. Povratak u izbornik\n";
  35. cout << "---------------------------------------------------------------------\n";
  36. cout << "Vas izbor: ";
  37. cin >> iz;
  38. switch(iz){
  39. case 1:
  40. OT_stanje(OT);
  41. cout << "Cvor na koji zelite dodati dijete: ";
  42. cin >> n;
  43. cout << "Vrijednost: ";
  44. cin >> x;
  45. CreateT(x, n, OT);
  46. break;
  47.  
  48. case 2:
  49. OT_stanje(OT);
  50. cout << "Cvor koji zelite obrisati: ";
  51. cin >> n;
  52. DeleteT(n, OT);
  53. break;
  54.  
  55. case 3:
  56. OT_stanje(OT);
  57. break;
  58.  
  59. case 4:
  60. k = RootT(OT);
  61. cout << "Preorder:\n";
  62. Preorder(OT);
  63. cout << "\nInorder:\n";
  64. OT->first = k;
  65. Inorder(OT);
  66. cout << "\nPostorder:\n";
  67. OT->first = k;
  68. Postorder(OT);
  69. break;
  70.  
  71. case 9:
  72. cout << "Vracam se u izbornik...\n\n";
  73. break;
  74. }
  75. }while(iz!=9);
  76. }
  77.  
  78. void binarno_a(){
  79. cout << "\nBinarno stablo pomocu polja\n";
  80. cout << "---------------------------------------------------------------------\n";
  81. tree *T = InitB(7, T);
  82. cout << "Stablo je kreirano sa korijenom 7.\n";
  83. cout << "Dodaje se lijevo dijete 10 i desno dijete 8...\n";
  84. CreateLeftB(10, 7, T);
  85. CreateRightB(8, 7, T);
  86. cout << "Dodaje se desno dijete 15 cvoru 8...\n";
  87. CreateRightB(15, 8, T);
  88. cout << "Dodaje se lijevo dijete 2 i desno dijete 3 cvoru 10...\n";
  89. CreateLeftB(2, 10, T);
  90. CreateRightB(3, 10, T);
  91. cout << "Dodaje se lijevo dijete 4 i desno dijete 5 cvoru 2...\n";
  92. CreateLeftB(4, 2, T);
  93. CreateRightB(5, 2, T);
  94. cout << "Dodaje se lijevo dijete 12 cvoru 4...\n";
  95. CreateLeftB(12, 4, T);
  96. cout << "Mijenja se vrijednost cvora 15 na vrijednost 30...\n";
  97. ChangeLabelB(30, 15, T);
  98. cout << "Brise se cvor 2...\n";
  99. DeleteB(2, T);
  100. }
  101.  
  102. void binarno_p(){
  103. cout << "\nBinarno stablo pomocu pokazivaca\n";
  104. cout << "---------------------------------------------------------------------\n";
  105. node *T = InitB(1, T);
  106. cout << "Stablo je kreirano sa korijenom 1.\n";
  107. cout << "Dodaje se lijevo dijete 7 i desno dijete 13...\n";
  108. CreateLeftB(7, T);
  109. CreateRightB(13, T);
  110. cout << "Dodaje se desno dijete 15 cvoru 13...\n";
  111. CreateRightB(15, RightChildB(T));
  112. cout << "Dodaje se lijevo dijete 6 i desno dijete 3 cvoru 7...\n";
  113. CreateLeftB(6, LeftChildB(T));
  114. CreateRightB(3, LeftChildB(T));
  115. cout << "Dodaje se lijevo dijete 5 i desno dijete 4 cvoru 3...\n";
  116. CreateLeftB(5, RightChildB(LeftChildB(T)));
  117. CreateRightB(4, RightChildB(LeftChildB(T)));
  118. cout << "Dodaje se lijevo dijete 2 cvoru 4...\n";
  119. CreateLeftB(2, RightChildB(RightChildB(LeftChildB(T))));
  120. cout << "Mijenja se vrijednost cvora 15 na vrijednost 9...\n";
  121. ChangeLabelB(9, RightChildB(RightChildB(T)));
  122. cout << "Brise se cvor 3...\n";
  123. DeleteB(RightChildB(LeftChildB(T)), T);
  124. }
  125.  
  126. void bin_s(){
  127. int n, m, k;
  128. cout << "Unesite broj elemenata koliko zelite staviti u stablo: ";
  129. cin >> n;
  130. cout << "1. broj (korijen): ";
  131. cin >> m;
  132. node *T = InitB(m, T);
  133. for(int i=1; i<n; i++){
  134. cout << i+1 << ". broj: ";
  135. cin >> m;
  136. insert_BS(m, T);
  137. }
  138. cout << "Broj koji zelite naci: ";
  139. cin >> k,
  140. bin_search(k, T);
  141. }
  142.  
  143. void hrpa(){
  144. int n, m;
  145. cout << "Unesite broj elemenata koliko zelite sortirati: ";
  146. cin >> n;
  147. cout << "1. broj: ";
  148. cin >> m;
  149. tree *H = InitB(m, H);
  150. for(int i=1; i<n; i++){
  151. cout << i+1 << ". broj: ";
  152. cin >> m;
  153. insert_h(m, H);
  154. }
  155. cout << "\nSortirani brojevi:\n";
  156. sort_h(H);
  157. cout << endl << endl;
  158. }
  159.  
  160. int main (){
  161. int x;
  162. do{
  163. cout << "---------------------------------------------------------------------\n";
  164. cout << "\t\t\tI Z B O R N I K\n";
  165. cout << "---------------------------------------------------------------------\n";
  166. cout << "1. Opcenito stablo (Prvo dijete - sljedeci brat i ophodnja stabla)\n";
  167. cout << "2. Binarno stablo pomocu polja\n";
  168. cout << "3. Binarno stablo pomocu pokazivaca\n";
  169. cout << "4. Binarno stablo pretrazivanja\n";
  170. cout << "5. Sortiranje hrpom\n";
  171. cout << "9. Izlaz iz programa\n";
  172. cout << "---------------------------------------------------------------------\n";
  173. cout << "Vas izbor: ";
  174. cin >> x;
  175. switch(x){
  176. case 1: opcenito(); break;
  177. case 2: binarno_a(); break;
  178. case 3: binarno_p(); break;
  179. case 4: bin_s(); break;
  180. case 5: hrpa(); break;
  181. case 9: cout << "\nIzlazim...\n"; break;
  182. }
  183. }while(x!=9);
  184. return 0;
  185. }

Report this snippet  

You need to login to post a comment.