Posted By

igotepava on 01/18/15

main.cpp

/ Published in: C++

Zadatak 4 iz kolegija Strukture podataka

`#include <iostream>using namespace std; #include "opcenito_stablo.h"#include "ophodnja_stabla.h"#include "binarno_stablo_polje.h"#include "binarno_stablo_pokazivac.h"#include "binarno_stablo_pretrazivanja.h"#include "hrpa.h" void OT_stanje(tr *OT){	cout << "Stanje u stablu\n";	cout << "---------------------------------------------------------------------\n";	cout << "Vrijednost\tOznaka\tPrvo dijete\tSljedeci brat\n";	cout << "---------------------------------------------------------------------\n";	for(int i=0; i<10000; i++){		if(LabelT(i, OT) != '0') cout << i << "\t\t" << LabelT(i, OT) << "\t" << FirstChildT(i, OT) << "\t\t" << NextSiblingT(i, OT) << endl;	}} void opcenito(){	tr *OT;	int n, iz, k, x;	cout << "Unesite korijen stabla: ";	cin >> n;	OT = InitT(n, OT);	do{		cout << "\nOdaberite:\n";		cout << "---------------------------------------------------------------------\n";		cout << "1. Dodavanje novog djeteta na neki cvor\n";		cout << "2. Brisanje cvora\n";		cout << "3. Stanje u stablu\n";		cout << "4. Ophodnja stabla\n";		cout << "9. Povratak u izbornik\n";		cout << "---------------------------------------------------------------------\n";		cout << "Vas izbor: ";		cin >> iz;		switch(iz){			case 1:				OT_stanje(OT);				cout << "Cvor na koji zelite dodati dijete: ";				cin >> n;				cout << "Vrijednost: ";				cin >> x;				CreateT(x, n, OT);				break; 			case 2:				OT_stanje(OT);				cout << "Cvor koji zelite obrisati: ";				cin >> n;				DeleteT(n, OT);				break; 			case 3:				OT_stanje(OT);				break; 			case 4:				k = RootT(OT);				cout << "Preorder:\n";				Preorder(OT);				cout << "\nInorder:\n";				OT->first = k;				Inorder(OT);				cout << "\nPostorder:\n";				OT->first = k;							Postorder(OT);									break; 			case 9:				cout << "Vracam se u izbornik...\n\n";				break;		}	}while(iz!=9);} void binarno_a(){	cout << "\nBinarno stablo pomocu polja\n";	cout << "---------------------------------------------------------------------\n";	tree *T = InitB(7, T);	cout << "Stablo je kreirano sa korijenom 7.\n";	cout << "Dodaje se lijevo dijete 10 i desno dijete 8...\n";	CreateLeftB(10, 7, T);	CreateRightB(8, 7, T);	cout << "Dodaje se desno dijete 15 cvoru 8...\n";	CreateRightB(15, 8, T);	cout << "Dodaje se lijevo dijete 2 i desno dijete 3 cvoru 10...\n";	CreateLeftB(2, 10, T);	CreateRightB(3, 10, T);	cout << "Dodaje se lijevo dijete 4 i desno dijete 5 cvoru 2...\n";	CreateLeftB(4, 2, T);	CreateRightB(5, 2, T);	cout << "Dodaje se lijevo dijete 12 cvoru 4...\n";	CreateLeftB(12, 4, T);	cout << "Mijenja se vrijednost cvora 15 na vrijednost 30...\n";	ChangeLabelB(30, 15, T);	cout << "Brise se cvor 2...\n";	DeleteB(2, T);} void binarno_p(){	cout << "\nBinarno stablo pomocu pokazivaca\n";	cout << "---------------------------------------------------------------------\n";	node *T = InitB(1, T);	cout << "Stablo je kreirano sa korijenom 1.\n";	cout << "Dodaje se lijevo dijete 7 i desno dijete 13...\n";	CreateLeftB(7, T);	CreateRightB(13, T);	cout << "Dodaje se desno dijete 15 cvoru 13...\n";	CreateRightB(15, RightChildB(T));	cout << "Dodaje se lijevo dijete 6 i desno dijete 3 cvoru 7...\n";	CreateLeftB(6, LeftChildB(T));	CreateRightB(3, LeftChildB(T));	cout << "Dodaje se lijevo dijete 5 i desno dijete 4 cvoru 3...\n";	CreateLeftB(5, RightChildB(LeftChildB(T)));	CreateRightB(4, RightChildB(LeftChildB(T)));	cout << "Dodaje se lijevo dijete 2 cvoru 4...\n";	CreateLeftB(2, RightChildB(RightChildB(LeftChildB(T))));	cout << "Mijenja se vrijednost cvora 15 na vrijednost 9...\n";	ChangeLabelB(9, RightChildB(RightChildB(T)));	cout << "Brise se cvor 3...\n";	DeleteB(RightChildB(LeftChildB(T)), T);} void bin_s(){	int n, m, k;		cout << "Unesite broj elemenata koliko zelite staviti u stablo: ";	cin >> n;	cout << "1. broj (korijen): ";	cin >> m;	node *T = InitB(m, T);	for(int i=1; i<n; i++){		cout << i+1 << ". broj: ";		cin >> m;		insert_BS(m, T);	}	cout << "Broj koji zelite naci: ";	cin >> k,	bin_search(k, T);} void hrpa(){	int n, m;	cout << "Unesite broj elemenata koliko zelite sortirati: ";	cin >> n;	cout << "1. broj: ";	cin >> m;	tree *H = InitB(m, H);	for(int i=1; i<n; i++){		cout << i+1 << ". broj: ";		cin >> m;		insert_h(m, H);	}	cout << "\nSortirani brojevi:\n";	sort_h(H);	cout << endl << endl;} int main (){	int x;	do{		cout << "---------------------------------------------------------------------\n";		cout << "\t\t\tI Z B O R N I K\n";		cout << "---------------------------------------------------------------------\n";		cout << "1. Opcenito stablo (Prvo dijete - sljedeci brat i ophodnja stabla)\n";		cout << "2. Binarno stablo pomocu polja\n";		cout << "3. Binarno stablo pomocu pokazivaca\n";		cout << "4. Binarno stablo pretrazivanja\n";		cout << "5. Sortiranje hrpom\n";		cout << "9. Izlaz iz programa\n";		cout << "---------------------------------------------------------------------\n";		cout << "Vas izbor: ";		cin >> x;		switch(x){			case 1:	opcenito();	break;							case 2:	binarno_a(); break;						case 3:	binarno_p(); break;							case 4:	bin_s(); break;					case 5:	hrpa();	break;			case 9: cout << "\nIzlazim...\n"; break;		}	}while(x!=9);		return 0;}`