Revision: 65682
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 11, 2014 03:51 by HeatPwnz
Initial Code
#include<iostream>
#include "opcenito_stablo.h"
#include "bin_array.h"
//#include "bin_pointer.h"
#include "ophodenje_stabla.h"
using namespace std;
tree *stablo1;
btree *stablo2;
bool alocirano1=false;
bool alocirano2=false;
void PICEK(){
int izbor, cvor;
char K;
if(!alocirano1){
cout << endl << "Inicijalizacija.." << endl;
cout << "Oznaka korijena stabla: ";
cin>>K;
stablo1=InitT(K,stablo1);
alocirano1=true;
}
do{
cout << endl << "Korijen: " << RootT(stablo1) << endl;
cout << "1. Novi cvor" << endl;
cout << "2. Roditelj cvora" << endl;
cout << "3. Prvo dijete cvora" << endl;
cout << "4. Sljedeci brat cvora" << endl;
cout << "5. Oznaka cvora" << endl;
cout << "6. Promjena oznake cvora" << endl;
cout << "7. Obrisi cvor" << endl;
cout << "8. Ispisi svu djecu cvora" << endl;
cout << "9. Izlaz" << endl;
cout << "Odaberi: ";
cin >> izbor, cout << endl;
switch(izbor){
case 2:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
cvor=ParentT(cvor, stablo1);
cout << "Roditelj cvora je " << cvor << endl;
break;
case 3:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
cvor=FirstChildT(cvor, stablo1);
if(cvor!=-1)
cout << "Prvo dijete cvora je " << cvor << endl;
else
cout <<"Cvor ne postoji.." << endl;
break;
case 4:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
cvor=NextSiblingT(cvor, stablo1);
if(cvor!=-1)
cout << "Sljedeci brat cvora je " << cvor << endl;
else
cout << "Cvor ne postoji.." << endl;
break;
case 5:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
K=LabelT(cvor, stablo1);
cout << "Oznaka cvora je " << K << endl;
break;
case 1:
cout << "Unesi cvor(roditelj buduceg): ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
cout << "Unesi oznaku za cvor: ";
cin >> K;
cout << "Pozicija novog cvora je " << CreateT(K,cvor,stablo1) << endl;
break;
case 6:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
cout << "Unesi novu oznaku cvora: ";
cin >> K;
ChangeLabelT(K, cvor, stablo1);
break;
case 7:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
if(DeleteT(cvor, stablo1))
cout << "Cvor obrisan.." << endl;
else
cout << "Cvor nije obrisan..." << endl;
break;
case 8:
cout << "Unesi cvor: ";
cin >> cvor;
if(LabelT(cvor, stablo1)==' '){
cout << "Taj cvor ne postoji!" << endl;
break;
}
if(FirstChildT(cvor, stablo1)!=-1){
cvor=FirstChildT(cvor, stablo1);
cout << "Prvo dijete: " << cvor << endl;
while(NextSiblingT(cvor, stablo1)!=-1)
cvor=NextSiblingT(cvor, stablo1),
cout << "Sljedece dijete: " << cvor << endl;
}
else
cout << "Cvor nema djece.." << endl;
break;
}
}while(izbor!=9);
}
void MICEK(){
int izbor, cvorb;
char K, O;
element cv;
if(!alocirano2){
cout << endl << "Inicijalizacija binarnog stabla.." << endl;
cout << "Oznaka korijena stabla: ";
cin >> K;
stablo2=InitB(K,stablo2);
alocirano2=true;
}
do{
cout <<endl;
cout << "Oznaka korijena stabla: " << LabelB(RootB(stablo2),stablo2) << "(" << RootB(stablo2) << ")" << endl;
cout << "1. Dodaj lijevo dijete" << endl;
cout << "2. Dodaj desno dijete" << endl;
cout << "3. Roditelj cvora" << endl;
cout << "4. Lijevo dijete cvora" << endl;
cout << "5. Desno dijete cvora" << endl;
cout << "6. Promjena oznake cvora" << endl;
cout << "7. Obrisi cvor" << endl;
cout << "9. Izlaz" << endl;
cout << "Odaberi: ";
cin >> izbor, cout << endl;
switch(izbor){
case 1:
cout << "Dodajem lijevo..." << endl;
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
cout << "Unesi oznaku novog cvora: ";
cin >> K;
cv=postoji(O, stablo2);
CreateLeftB(K, cv, stablo2);
break;
case 2:
cout << "Dodajem desno..." << endl;
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout<<"Ne postoji taj cvor..\n";
if(!postoji(O, stablo2))
break;
cout << "Unesi oznaku novog cvora: ";
cin >> K;
cv=postoji(O, stablo2);
CreateRightB(K, cv, stablo2);
break;
case 3:
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
cv=postoji(O, stablo2);
if(LabelB(cv, stablo2)==LabelB(RootB(stablo2), stablo2)){
cout << "Korijen stabla nema roditelje.." << endl;
break;
}
if(ParentB(cv, stablo2))
cout << "Roditelj tog cvora je " << LabelB(ParentB(cv, stablo2),stablo2) << endl;
break;
case 4:
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
cv=postoji(O, stablo2);
if(LeftChildB(cv, stablo2)){
cv=LeftChildB(cv, stablo2);
cout << "Oznaka lijevog dijeteta tog cvora je " << LabelB(cv, stablo2) << endl;
}
else
cout << "Nema dijete.." << endl;
break;
case 5:
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
cv=postoji(O, stablo2);
if(RightChildB(cv, stablo2)){
cv=RightChildB(cv, stablo2);
cout << "Oznaka desnog dijeteta tog cvora je " << LabelB(cv, stablo2) << endl;
}
else
cout << "Nema dijete.." << endl;
break;
case 6:
cout << "Unesi oznaku cvora: ";
cin >> O;
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
cv=postoji(O, stablo2);
cout << "Unesi novu oznaku cvora: ";
cin >> O;
ChangeLabelB(O, cv, stablo2);
cout << "Uspjesno izmjenjeno.." << endl;
break;
case 7:
cout << "Unesi oznaku cvora: ";
cin >> O;
char odaberi='n';
if(!postoji(O, stablo2))
cout << "Ne postoji taj cvor.." << endl;
if(!postoji(O, stablo2))
break;
if(LabelB(cv, stablo2)==LabelB(RootB(stablo2), stablo2)){
cout << "Brisati korijen(d/n): ";
char odaberi;
do cin >> odaberi;
while(odaberi!='d'&&odaberi!='n');
if(odaberi=='d'){
cout << endl << "Brisem korijen i vracam se u glavni izbornik" << endl;
alocirano2=false;
}
}
DeleteB(cv, stablo2);
cout << "Izbrisano.." << endl;
if(odaberi=='d')
return;
break;
}
}while(izbor!=9);
}
void ZMAJ(){
if(!alocirano2)
cout << endl << "Binarno stablo ne postoji..." << endl;
if(!alocirano2)
return;
int izbor;
do{
cout << endl << endl << "1. Preorder" << endl;
cout << "2. Inorder" << endl;
cout << "3. Postorder" << endl;
cout << "9. Povratak u glavni izbornik" << endl;
cout << "Odaberi: ";
cin >> izbor;
cout << endl << "Ispisujem oznake: ";
switch(izbor){
case 1: preorder(RootB(stablo2),stablo2); cout << endl; break;
case 2: inorder(RootB(stablo2),stablo2); cout << endl; break;
case 3: postorder(RootB(stablo2),stablo2); cout << endl; break;
}
}while(izbor!=9);
}
int main(){
int izbor;
do{
cout << endl << "--------------------------------------------" << endl;
cout << "1. Implementacija prvo dijete-sljedeci brat" << endl;
cout << "2. Binarno stablo" << endl;
cout << "3. Ophodjenje stabla" << endl;
cout << "--------------------------------------------" << endl;
cout << "Odaberi: ";
cin >> izbor;
switch(izbor){
case 1:
PICEK();break;
case 2:
MICEK();break;
case 3:
ZMAJ();break;
}
}while(izbor!=9);
return 0;
}
Initial URL
Initial Description
main program 4. vjezbe iz SP
Initial Title
Z4_hbradvic.cpp
Initial Tags
Initial Language
C++