Posted By


HeatPwnz on 01/11/14

Tagged


Statistics


Viewed 69 times
Favorited by 0 user(s)

Z4_hbradvic.cpp


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

main program 4. vjezbe iz SP


Copy this code and paste it in your HTML
  1. #include<iostream>
  2. #include "opcenito_stablo.h"
  3. #include "bin_array.h"
  4. //#include "bin_pointer.h"
  5. #include "ophodenje_stabla.h"
  6. using namespace std;
  7.  
  8. tree *stablo1;
  9. btree *stablo2;
  10. bool alocirano1=false;
  11. bool alocirano2=false;
  12.  
  13. void PICEK(){
  14. int izbor, cvor;
  15. char K;
  16. if(!alocirano1){
  17.  
  18. cout << endl << "Inicijalizacija.." << endl;
  19. cout << "Oznaka korijena stabla: ";
  20. cin>>K;
  21. stablo1=InitT(K,stablo1);
  22. alocirano1=true;
  23. }
  24. do{
  25. cout << endl << "Korijen: " << RootT(stablo1) << endl;
  26. cout << "1. Novi cvor" << endl;
  27. cout << "2. Roditelj cvora" << endl;
  28. cout << "3. Prvo dijete cvora" << endl;
  29. cout << "4. Sljedeci brat cvora" << endl;
  30. cout << "5. Oznaka cvora" << endl;
  31. cout << "6. Promjena oznake cvora" << endl;
  32. cout << "7. Obrisi cvor" << endl;
  33. cout << "8. Ispisi svu djecu cvora" << endl;
  34. cout << "9. Izlaz" << endl;
  35. cout << "Odaberi: ";
  36. cin >> izbor, cout << endl;
  37. switch(izbor){
  38. case 2:
  39. cout << "Unesi cvor: ";
  40. cin >> cvor;
  41. if(LabelT(cvor, stablo1)==' '){
  42. cout << "Taj cvor ne postoji!" << endl;
  43. break;
  44. }
  45. cvor=ParentT(cvor, stablo1);
  46. cout << "Roditelj cvora je " << cvor << endl;
  47. break;
  48. case 3:
  49. cout << "Unesi cvor: ";
  50. cin >> cvor;
  51. if(LabelT(cvor, stablo1)==' '){
  52. cout << "Taj cvor ne postoji!" << endl;
  53. break;
  54. }
  55. cvor=FirstChildT(cvor, stablo1);
  56. if(cvor!=-1)
  57. cout << "Prvo dijete cvora je " << cvor << endl;
  58. else
  59. cout <<"Cvor ne postoji.." << endl;
  60. break;
  61. case 4:
  62. cout << "Unesi cvor: ";
  63. cin >> cvor;
  64. if(LabelT(cvor, stablo1)==' '){
  65. cout << "Taj cvor ne postoji!" << endl;
  66. break;
  67. }
  68. cvor=NextSiblingT(cvor, stablo1);
  69. if(cvor!=-1)
  70. cout << "Sljedeci brat cvora je " << cvor << endl;
  71. else
  72. cout << "Cvor ne postoji.." << endl;
  73. break;
  74. case 5:
  75. cout << "Unesi cvor: ";
  76. cin >> cvor;
  77. if(LabelT(cvor, stablo1)==' '){
  78. cout << "Taj cvor ne postoji!" << endl;
  79. break;
  80. }
  81. K=LabelT(cvor, stablo1);
  82. cout << "Oznaka cvora je " << K << endl;
  83. break;
  84. case 1:
  85. cout << "Unesi cvor(roditelj buduceg): ";
  86. cin >> cvor;
  87. if(LabelT(cvor, stablo1)==' '){
  88. cout << "Taj cvor ne postoji!" << endl;
  89. break;
  90. }
  91. cout << "Unesi oznaku za cvor: ";
  92. cin >> K;
  93. cout << "Pozicija novog cvora je " << CreateT(K,cvor,stablo1) << endl;
  94. break;
  95. case 6:
  96. cout << "Unesi cvor: ";
  97. cin >> cvor;
  98. if(LabelT(cvor, stablo1)==' '){
  99. cout << "Taj cvor ne postoji!" << endl;
  100. break;
  101. }
  102. cout << "Unesi novu oznaku cvora: ";
  103. cin >> K;
  104. ChangeLabelT(K, cvor, stablo1);
  105. break;
  106. case 7:
  107. cout << "Unesi cvor: ";
  108. cin >> cvor;
  109. if(LabelT(cvor, stablo1)==' '){
  110. cout << "Taj cvor ne postoji!" << endl;
  111. break;
  112. }
  113. if(DeleteT(cvor, stablo1))
  114. cout << "Cvor obrisan.." << endl;
  115. else
  116. cout << "Cvor nije obrisan..." << endl;
  117. break;
  118. case 8:
  119. cout << "Unesi cvor: ";
  120. cin >> cvor;
  121. if(LabelT(cvor, stablo1)==' '){
  122. cout << "Taj cvor ne postoji!" << endl;
  123. break;
  124. }
  125. if(FirstChildT(cvor, stablo1)!=-1){
  126. cvor=FirstChildT(cvor, stablo1);
  127. cout << "Prvo dijete: " << cvor << endl;
  128. while(NextSiblingT(cvor, stablo1)!=-1)
  129. cvor=NextSiblingT(cvor, stablo1),
  130. cout << "Sljedece dijete: " << cvor << endl;
  131.  
  132. }
  133. else
  134. cout << "Cvor nema djece.." << endl;
  135. break;
  136. }
  137. }while(izbor!=9);
  138. }
  139.  
  140. void MICEK(){
  141. int izbor, cvorb;
  142. char K, O;
  143. element cv;
  144. if(!alocirano2){
  145.  
  146. cout << endl << "Inicijalizacija binarnog stabla.." << endl;
  147. cout << "Oznaka korijena stabla: ";
  148. cin >> K;
  149. stablo2=InitB(K,stablo2);
  150. alocirano2=true;
  151. }
  152. do{
  153. cout <<endl;
  154. cout << "Oznaka korijena stabla: " << LabelB(RootB(stablo2),stablo2) << "(" << RootB(stablo2) << ")" << endl;
  155. cout << "1. Dodaj lijevo dijete" << endl;
  156. cout << "2. Dodaj desno dijete" << endl;
  157. cout << "3. Roditelj cvora" << endl;
  158. cout << "4. Lijevo dijete cvora" << endl;
  159. cout << "5. Desno dijete cvora" << endl;
  160. cout << "6. Promjena oznake cvora" << endl;
  161. cout << "7. Obrisi cvor" << endl;
  162. cout << "9. Izlaz" << endl;
  163. cout << "Odaberi: ";
  164. cin >> izbor, cout << endl;
  165. switch(izbor){
  166. case 1:
  167. cout << "Dodajem lijevo..." << endl;
  168. cout << "Unesi oznaku cvora: ";
  169. cin >> O;
  170. if(!postoji(O, stablo2))
  171. cout << "Ne postoji taj cvor.." << endl;
  172. if(!postoji(O, stablo2))
  173. break;
  174. cout << "Unesi oznaku novog cvora: ";
  175. cin >> K;
  176. cv=postoji(O, stablo2);
  177. CreateLeftB(K, cv, stablo2);
  178. break;
  179. case 2:
  180. cout << "Dodajem desno..." << endl;
  181. cout << "Unesi oznaku cvora: ";
  182. cin >> O;
  183. if(!postoji(O, stablo2))
  184. cout<<"Ne postoji taj cvor..\n";
  185. if(!postoji(O, stablo2))
  186. break;
  187. cout << "Unesi oznaku novog cvora: ";
  188. cin >> K;
  189. cv=postoji(O, stablo2);
  190. CreateRightB(K, cv, stablo2);
  191. break;
  192. case 3:
  193. cout << "Unesi oznaku cvora: ";
  194. cin >> O;
  195. if(!postoji(O, stablo2))
  196. cout << "Ne postoji taj cvor.." << endl;
  197. if(!postoji(O, stablo2))
  198. break;
  199. cv=postoji(O, stablo2);
  200. if(LabelB(cv, stablo2)==LabelB(RootB(stablo2), stablo2)){
  201. cout << "Korijen stabla nema roditelje.." << endl;
  202. break;
  203. }
  204. if(ParentB(cv, stablo2))
  205. cout << "Roditelj tog cvora je " << LabelB(ParentB(cv, stablo2),stablo2) << endl;
  206. break;
  207. case 4:
  208. cout << "Unesi oznaku cvora: ";
  209. cin >> O;
  210. if(!postoji(O, stablo2))
  211. cout << "Ne postoji taj cvor.." << endl;
  212. if(!postoji(O, stablo2))
  213. break;
  214. cv=postoji(O, stablo2);
  215. if(LeftChildB(cv, stablo2)){
  216. cv=LeftChildB(cv, stablo2);
  217. cout << "Oznaka lijevog dijeteta tog cvora je " << LabelB(cv, stablo2) << endl;
  218. }
  219. else
  220. cout << "Nema dijete.." << endl;
  221. break;
  222. case 5:
  223. cout << "Unesi oznaku cvora: ";
  224. cin >> O;
  225. if(!postoji(O, stablo2))
  226. cout << "Ne postoji taj cvor.." << endl;
  227. if(!postoji(O, stablo2))
  228. break;
  229. cv=postoji(O, stablo2);
  230. if(RightChildB(cv, stablo2)){
  231. cv=RightChildB(cv, stablo2);
  232. cout << "Oznaka desnog dijeteta tog cvora je " << LabelB(cv, stablo2) << endl;
  233. }
  234. else
  235. cout << "Nema dijete.." << endl;
  236. break;
  237. case 6:
  238. cout << "Unesi oznaku cvora: ";
  239. cin >> O;
  240. if(!postoji(O, stablo2))
  241. cout << "Ne postoji taj cvor.." << endl;
  242. if(!postoji(O, stablo2))
  243. break;
  244. cv=postoji(O, stablo2);
  245. cout << "Unesi novu oznaku cvora: ";
  246. cin >> O;
  247. ChangeLabelB(O, cv, stablo2);
  248. cout << "Uspjesno izmjenjeno.." << endl;
  249. break;
  250. case 7:
  251. cout << "Unesi oznaku cvora: ";
  252. cin >> O;
  253. char odaberi='n';
  254. if(!postoji(O, stablo2))
  255. cout << "Ne postoji taj cvor.." << endl;
  256. if(!postoji(O, stablo2))
  257. break;
  258.  
  259. if(LabelB(cv, stablo2)==LabelB(RootB(stablo2), stablo2)){
  260. cout << "Brisati korijen(d/n): ";
  261. char odaberi;
  262. do cin >> odaberi;
  263. while(odaberi!='d'&&odaberi!='n');
  264. if(odaberi=='d'){
  265. cout << endl << "Brisem korijen i vracam se u glavni izbornik" << endl;
  266. alocirano2=false;
  267. }
  268. }
  269. DeleteB(cv, stablo2);
  270. cout << "Izbrisano.." << endl;
  271. if(odaberi=='d')
  272. return;
  273. break;
  274. }
  275. }while(izbor!=9);
  276. }
  277. void ZMAJ(){
  278. if(!alocirano2)
  279. cout << endl << "Binarno stablo ne postoji..." << endl;
  280. if(!alocirano2)
  281. return;
  282. int izbor;
  283. do{
  284. cout << endl << endl << "1. Preorder" << endl;
  285. cout << "2. Inorder" << endl;
  286. cout << "3. Postorder" << endl;
  287. cout << "9. Povratak u glavni izbornik" << endl;
  288. cout << "Odaberi: ";
  289. cin >> izbor;
  290. cout << endl << "Ispisujem oznake: ";
  291. switch(izbor){
  292. case 1: preorder(RootB(stablo2),stablo2); cout << endl; break;
  293. case 2: inorder(RootB(stablo2),stablo2); cout << endl; break;
  294. case 3: postorder(RootB(stablo2),stablo2); cout << endl; break;
  295.  
  296. }
  297. }while(izbor!=9);
  298. }
  299. int main(){
  300. int izbor;
  301. do{
  302. cout << endl << "--------------------------------------------" << endl;
  303. cout << "1. Implementacija prvo dijete-sljedeci brat" << endl;
  304. cout << "2. Binarno stablo" << endl;
  305. cout << "3. Ophodjenje stabla" << endl;
  306. cout << "--------------------------------------------" << endl;
  307.  
  308. cout << "Odaberi: ";
  309. cin >> izbor;
  310. switch(izbor){
  311. case 1:
  312. PICEK();break;
  313. case 2:
  314. MICEK();break;
  315. case 3:
  316. ZMAJ();break;
  317. }
  318. }while(izbor!=9);
  319. return 0;
  320. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.