Return to Snippet

Revision: 65682
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++