Posted By

hmilkovi on 01/13/14


Tagged

tree binary c++ implementacija binarno stablo


Versions (?)

GLavni program


 / Published in: C++
 

Glavni program implementacija općenitog i binarnog stabla

  1. #include <iostream>
  2. #include <string>
  3. #include "OpStablo.h"
  4. #include "bStablo_polje.h"
  5. #include "bStablo_pokazivac.h"
  6.  
  7. using namespace std;
  8.  
  9. spolje*stablo;
  10. string ispis;
  11. bool alocirano3=false,alocirano4=false;
  12. char naziv[50],naziv4[50];
  13. int izbor1=0,opcija=0,n;
  14.  
  15. bool funkcija1()
  16. {
  17. if(!alocirano3)
  18. {
  19. stablo=new spolje;
  20. alocirano3=true;
  21. cout<<"Unesite naziv najstarijeg potomka: ";
  22. cin.ignore();
  23. cin.getline(naziv,50);
  24. InitT(naziv,stablo);
  25. }
  26.  
  27. while(opcija!=10)
  28. {
  29. cout<<"Izbornik\n";
  30. cout<<"1. InitT \n";
  31. cout<<"2. ParentT\n";
  32. cout<<"3. FirstChildT\n";
  33. cout<<"4. NextSiblingT\n";
  34. cout<<"5. RootT\n";
  35. cout<<"6. LabelT\n";
  36. cout<<"7. CreateT\n";
  37. cout<<"8. ChangeLabelT\n";
  38. cout<<"9. DeleteT\n";
  39. cout<<"10. Izlaz\n";
  40. cout<<"Vas odabir = ";
  41. cin>>opcija;
  42.  
  43. switch(opcija)
  44. {
  45. case 1:
  46. alocirano3=true;
  47. cout<<"Unesite naziv najstarijeg potomka: ";
  48. cin.ignore();
  49. cin.getline(naziv,50);
  50. InitT(naziv,stablo);
  51. break;
  52.  
  53. case 2:
  54. if(!alocirano3)
  55. {
  56. cout<<"Ne postoji clan u stablu\n";
  57. return 0;
  58. }
  59. cout<<"Indeks cvora kojemu zelite pronaci roditelja: ";
  60. cin>>n;
  61. n=ParentT(n,stablo);
  62. if(n==1000)cout<<"Ovaj cvor u stablu ne postoji\n";
  63. break;
  64.  
  65. case 3:
  66. cout<<"Unesite indeks elementa kojemu zelite pronaci prvo lijevo dijete: ";
  67. cin>>n;
  68. n=FirstChildT(n,stablo);
  69. if(n==1000)cout<<"NE POSTOJI LIJEVO DIJETE ILI NE POSTOJI OVAJ CVOR\n";
  70. else cout<<"Lijevo dijete je: "<<stablo->dijelovi[n].label<<endl;
  71. break;
  72.  
  73. case 4:
  74. cout<<"Unesite indeks cvora kojemu zelite pronaci sljedeceg brata: ";
  75. cin>>n;
  76. n=NextSiblingT(n,stablo);
  77. if(n==1000)cout<<"NE POSTOJI OVAJ CVOR U STABLU\n";
  78. else cout<<"Sljedeci brat ovog cvora je: "<<stablo->dijelovi[n].label<<endl;
  79. break;
  80.  
  81. case 5:
  82. n=RootT(stablo);
  83. cout<<"Naziv korijena binarnog stabla je: "<<stablo->dijelovi[n].label<<endl;
  84. break;
  85.  
  86. case 6:
  87. cout<<"Unesite indeks elementa kojeg zelite pronaci naziv: ";
  88. cin>>n;
  89. LabelT(n,stablo);
  90. break;
  91.  
  92. case 7:
  93. cout<<"Unesite indeks elementa kojemu zelite dodati novog potomka: ";
  94. cin>>n;
  95. cout<<"Unesite indeks novog potomka: ";
  96. int indeks;
  97. cin>>indeks;
  98. CreateT(indeks,n,stablo);
  99. break;
  100.  
  101. case 8:
  102. cout<<"Unesite indeks cvora kojem zelite promijeniti oznaku: ";
  103. cin>>n;
  104. promijeninaziv(n,stablo);
  105. break;
  106.  
  107. case 9:
  108. cout<<"Unesite indeks cvora kojem zelite obrisati potomke: ";
  109. cin>>n;
  110. deleteT(n,stablo);
  111. if(n==999)cout<<"Stablo vise nije alocirano!\n";
  112. break;
  113. }
  114. }
  115.  
  116. system("cls");
  117. izbor1=0;
  118. opcija=0;
  119. return 1;
  120. }
  121.  
  122. sp*polje=new sp;
  123.  
  124. bool funkcija2()
  125. {
  126. int opcija;
  127.  
  128. if(!alocirano)
  129. {
  130. cout<<"Unesite naziv korijena binarnog stabla\n";
  131. cin.ignore();
  132. cin.getline(naziv,50);
  133. InitT(naziv,polje);
  134. alocirano=true;
  135. }
  136.  
  137. while(opcija!=11)
  138. {
  139. cout<<"\nIzbornik\n";
  140. cout<<"1. InitT\n";
  141. cout<<"2. CreateLeft\n";
  142. cout<<"3. CreateRight\n";
  143. cout<<"4. ParentT\n";
  144. cout<<"5. LeftChildT\n";
  145. cout<<"6. RightChildT\n";
  146. cout<<"7. LabelT\n";
  147. cout<<"8. DeleteT\n";
  148. cout<<"9. RootT\n";
  149. cout<<"10. ChangeLabelT\n";
  150. cout<<"11. Izlaz\n";
  151. cout<<"Odaberite jednu od opcija: ";
  152. cout<<"Vas odabir = ";
  153. cin>>opcija;
  154.  
  155. switch(opcija)
  156. {
  157. case 1:
  158. cout<<"Unesite naziv korijena binarnog stabla\n";
  159. cin.ignore();
  160. cin.getline(naziv,50);
  161. InitT(naziv,polje);
  162. alocirano=true;
  163. break;
  164. case 2:
  165. cout<<"Na koji cvor zelite dodati lijevo dijete?\n";
  166. cin>>opcija;
  167. cout<<"Unesite naziv lijevog djeteta: ";
  168. cin.ignore();
  169. cin.getline(naziv,50);
  170. createleft(naziv,opcija,polje);
  171. break;
  172. case 3:
  173. cout<<"Na koji cvor zelite dodati desno dijete?\n";
  174. cin>>opcija;
  175. cout<<"Unesite naziv desnog djeteta: ";
  176. cin.ignore();
  177. cin.getline(naziv,50);
  178. createright(naziv,opcija,polje);
  179. break;
  180. case 4:
  181. cout<<"Kojeg cvora zelite pronaci roditelja? \n";
  182. cin>>opcija;
  183. parent(opcija,polje);
  184. cout<<"Roditelj cvora "<<opcija<<" je : "<<oznaka<<endl;
  185. break;
  186. case 5:
  187. cout<<"Unesite cvor od kojega zelite pronaci lijevo dijete: ";
  188. cin>>opcija;
  189. if(!leftchild(opcija,polje)) {}
  190. else
  191. {
  192. cout<<"Lijevo dijete cvora "<<opcija<<" je : "<<oznaka<<endl;
  193. }
  194. break;
  195. case 6:
  196. cout<<"Unesite cvor od kojega zelite pronaci desno dijete: ";
  197. cin>>opcija;
  198. if(!rightchild(opcija,polje)) {}
  199. else
  200. {
  201. cout<<"Desno dijete cvora "<<opcija<<" je: "<<oznaka<<endl;
  202. }
  203. break;
  204. case 7:
  205. cout<<"Unesite naziv cvora kojeg zelite da nadjete naziv: ";
  206. cin>>opcija;
  207. labelT(opcija,polje);
  208. cout<<"Naziv "<<opcija<<"-tog cvora je: "<<oznaka<<endl;
  209. break;
  210. case 8:
  211. cout<<"Unesite od kojeg cvora zelite obrisati potomke: ";
  212. cin>>opcija;
  213. deleteT(opcija,polje);
  214. if(opcija==1)
  215. {
  216. alocirano=false;
  217. cout<<"Unesite naziv korijena binarnog stabla\n";
  218. cin.ignore();
  219. cin.getline(naziv,50);
  220. InitT(naziv,polje);
  221. alocirano=true;
  222. }
  223. break;
  224. case 9:
  225. RootT(polje);
  226. cout<<"Naziv korijena binarnog stabla je: "<<oznaka<<endl;
  227. break;
  228. case 10:
  229. cout<<"Unesite redni broj cvora od kojeg zelite promijeniti naziv: ";
  230. cin>>opcija;
  231. cout<<"Unesite naziv kojim zelite zamijeniti postojeci: ";
  232. cin.ignore();
  233. cin.getline(naziv,50);
  234. ChangeLabelT(naziv,opcija,polje);
  235. break;
  236. }
  237. }
  238.  
  239. system("cls");
  240. opcija=0,izbor1=0;
  241. return 1;
  242. }
  243.  
  244. ele*polje2=new ele;
  245.  
  246. bool funkcija3(){
  247. ispis=(" \nDRUGI ZADATAK\n \n\n");
  248. for(int i=0; i<110; i++) {
  249. cout<<ispis[i];
  250. }
  251.  
  252. int izbor2;
  253.  
  254. if(!alocirano2) {
  255. alocirano2=true;
  256. cout<<"Unesite naziv korijena stabla: ";
  257. cin.ignore();
  258. cin.getline(naziv,50);
  259. init(naziv,polje2);
  260. system("cls");
  261. ispis=("Uspjesno je inicijalizirano novo stablo\n");
  262. for(int i=0; i<40; i++) {
  263. cout<<ispis[i];
  264. }
  265. }
  266.  
  267. while(izbor2!=10) {
  268. cout<<"\nIzbornik\n";
  269. cout<<"1. InitT\n";
  270. cout<<"2. CreateLeftT\n";
  271. cout<<"3. CreateRightT\n";
  272. cout<<"4. ParentT\n";
  273. cout<<"5. LeftChildT\n";
  274. cout<<"6. RightChild\n";
  275. cout<<"7. DeleteSiblingsT\n";
  276. cout<<"8. RootT\n";
  277. cout<<"9. ChangeNameT\n";
  278. cout<<"10. Izlaz\n";
  279. cout<<"Odaberite jednu od opcija: ";
  280. cin>>izbor2;
  281.  
  282. system("cls");
  283.  
  284. switch(izbor2) {
  285. case 1:
  286. alocirano2=true;
  287. cout<<"Unesite naziv korijena stabla: ";
  288. cin.ignore();
  289. cin.getline(naziv,50);
  290. init(naziv,polje2);
  291. system("cls");
  292. ispis=("Uspjesno je inicijalizirano novo stablo\n");
  293. for(int i=0; i<40; i++) {
  294. cout<<ispis[i];
  295. }
  296. break;
  297.  
  298. case 2:
  299. pronadjen=false;
  300. cout<<"Unesite naziv cvora kojem zelite dodati lijevo dijete: ";
  301. cin.ignore();
  302. cin.getline(naziv,50);
  303. cout<<"Unesite naziv novog lijevog djeteta: ";
  304. cin.getline(naziv4,50);
  305. novolijevo(naziv,naziv4,polje2);
  306. if(!pronadjen)cout<<"NE POSTOJI TAJ CVOR\n";
  307. break;
  308.  
  309. case 3:
  310. pronadjen=false;
  311. cout<<"Unesite naziv cvora kojem zelite dodati desno dijete: ";
  312. cin.ignore();
  313. cin.getline(naziv,50);
  314. cout<<"Unesite naziv desnog djeteta: ";
  315. cin.getline(naziv4,50);
  316. novodesno(naziv,naziv4,polje2);
  317. if(!pronadjen)cout<<"NE POSTOJI TAJ CVOR\n";
  318. break;
  319.  
  320. case 4:
  321. cout<<"Unesite naziv cvora kojem zelite pronaci roditelja: ";
  322. cin.ignore();
  323. cin.getline(naziv,50);
  324. pronadjen=false;
  325. roditelj(naziv,polje2);
  326. if(!pronadjen)cout<<"NE POSTOJI RODITELJ TOG CVORA!\n";
  327. break;
  328.  
  329. case 5:
  330. cout<<"Unesite naziv cvora kojem zelite pronaci lijevo dijete: ";
  331. cin.ignore();
  332. cin.getline(naziv,50);
  333. lijevodijete(naziv,polje2);
  334. if(!pronadjen)cout<<"NIJE PRONADJEN TAJ CVOR\n";
  335. else cout<<"Naziv lijevog djeteta je: "<<oznaka2<<endl;
  336. break;
  337.  
  338. case 6:
  339. cout<<"Unesite naziv cvora kojem zelite pronaci desno dijete: ";
  340. cin.ignore();
  341. cin.getline(naziv,50);
  342. desnodijete(naziv,polje2);
  343. if(!pronadjen)cout<<"NIJE PRONADJEN TAJ CVOR\n";
  344. else cout<<"Naziv desnog djeteta je: "<<oznaka2<<endl;
  345. break;
  346.  
  347. case 7:
  348. cout<<"Unesite naziv cvora kojem zelite obrisati potomke: ";
  349. cin.ignore();
  350. cin.getline(naziv,50);
  351. pronadjen=false;
  352. brisanje(naziv,polje2);
  353. if(!pronadjen)cout<<"NIJE PRONADJEN TAJ CVOR\n";
  354. break;
  355.  
  356. case 8:
  357. root(polje2);
  358. cout<<"Naziv korijena binarnog stabla je: "<<oznaka2<<endl;
  359. break;
  360.  
  361. case 9:
  362. cout<<"Unesite naziv cvora kojem zelite promijeniti naziv: ";
  363. cin.ignore();
  364. cin.getline(naziv,50);
  365. pronadjen=false;
  366. cout<<"Unesite novi naziv tog cvora: ";
  367. cin.getline(naziv4,50);
  368. mijenjanje(naziv,naziv4,polje2);
  369. if(!pronadjen)cout<<"NIJE PRONADJEN TAJ CVOR\n";
  370. break;
  371. }
  372. }
  373. izbor2=0,izbor1=0;
  374.  
  375. return 1;
  376. }
  377.  
  378.  
  379.  
  380. int main()
  381. {
  382. while(izbor1!=9)
  383. {
  384. cout<<"____________________IZBORNIK_____________________"<<endl;
  385. cout<<"1. Opcenito stablo 'prvo dijete - sljedeci brat\n";
  386. cout<<"2. Binarno stablo pomocu polja\n";
  387. cout<<"3. Binarno stablo pomocu pokazivaca\n";
  388. cout<<"9. Izlaz iz programa\n";
  389. cout<<"Vas izbor = ";
  390. cin>>izbor1;
  391.  
  392. system("cls");
  393.  
  394. switch(izbor1)
  395. {
  396. case 1: funkcija1(); break;
  397. case 2: funkcija2(); break;
  398. case 3: funkcija3(); break;
  399. }
  400. }
  401.  
  402. cout<<"Kraj programa\n";
  403.  
  404. cin>>opcija;
  405.  
  406. return 0;
  407. }

Report this snippet  

You need to login to post a comment.