Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- // binarna stabla
- //#include "bstablo_pokazivac.h"
- #include "bstablo_polje.h"
- // opcenito stablo
- #include "ostablo.h"
- using namespace std;
- pbsstablo BinarnoStablo;
- pstablo OpcenitoStablo;
- void wait() {
- char znak[32];
- cout << "Unesite bilo koji znak za nastavak...";
- cin >> znak;
- }
- // funkcije za binarno stablo:
- void bsInit() {
- cout << "0.Inicijalizirati stablo binarnog stabla(InitB)" << endl;
- int x = 1;
- cout << "Unesite vrijednost korijena: ";
- cin >> x;
- BinarnoStablo = (pbsstablo)malloc(sizeof(pbstablo));
- InitB(x, BinarnoStablo);
- }
- void bsParent() {
- cout << "1.Nadi roditelja binarnog stabla (ParentB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost cvora: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl;
- } //while
- if (x == -1)
- return;
- cvor p = ParentB(n, BinarnoStablo);
- if (p != 0)
- cout << "Roditelj cvora " << x << " je " << LabelB(p, BinarnoStablo) << endl;
- else
- cout << "Roditelj nije naden! Cvor je korijen stabla." << endl << endl;
- wait();
- } //Parent
- void bsLeftNode() {
- cout << "2.Nadji lijevo dijete binarnog stabla(LeftChildB)" << endl;
- int x;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0) cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl;
- } //while
- if (x == -1)
- return;
- cvor c = LeftChildB(n, BinarnoStablo);
- if (c != 0)
- cout << "Lijevo dijete: " << LabelB(c, BinarnoStablo) << endl;
- else
- cout << "Lijevo dijete: <PRAZNO>" << endl;
- wait();
- } //LeftNode
- void bsRightNode() {
- cout << "3.Nadi desno dijete binarnog stabla (RightChildB)" << endl << endl;
- int x;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0) cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cvor c = RightChildB(n, BinarnoStablo);
- if (c != 0)
- cout << "Desno dijete: " << LabelB(c, BinarnoStablo) << endl << endl;
- else
- cout << "Desno dijete: <PRAZNO>" << endl << endl;
- wait();
- } //RightNode
- void bsCreateLeft() {
- cout << "4. Napraviti lijevo dijete binarnog stabla(CreateLeftB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0) cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- }
- if (x == -1)
- return;
- cout << "Unesite vrijednost lijevog djeteta: ";
- cin >> d;
- int r = CreateLeftB(d, n, BinarnoStablo);
- if (r == 0) {
- cout << "GRESKA: Lijevo dijete vec postoji!";
- wait();
- } //if
- } //CreateLeft
- void bsCreateRight() {
- cout << "5. Napraviti desno dijete binarnog stabla(CreateRightB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0) cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cout << "Unesite vrijednost desnog djeteta: ";
- cin >> d;
- int r = CreateRightB(d, n, BinarnoStablo);
- if (r == 0) {
- cout << "GRESKA: Desno dijete vec postoji!";
- wait();
- } //if
- } //CreateRight
- void bsLabel() {
- cout << "6.Vrijednost cvora binarnog stabla (LabelB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite trazeni cvor: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cout << "Vrijednost cvora: " << LabelB(n, BinarnoStablo) << endl << endl;
- wait();
- } //Label
- void bsChangeLabel() {
- cout << "7.Promijeni vrijednost cvora binarnog stabla (ChangeLabelB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite staru vrijednost cvora: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //ChangeLabel
- if (x == -1)
- return;
- cout << "Unesite novu vrijednost cvora: ";
- cin >> d;
- ChangeLabelB(d, n, BinarnoStablo);
- } //ChangeLabel
- void bsRoot() {
- cout << "8.Nadi korijen binarnog stabla (RootB)" << endl << endl;
- cvor t = RootB(BinarnoStablo);
- cout << "Korijen: " << LabelB(t, BinarnoStablo) << endl << endl;
- wait();
- } //Root
- void bsDelete() {
- cout << "9.Obrisati cvor binarnog stabla (DeleteB)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost cvora: ";
- cin >> x;
- n = FindLabelB(x, BinarnoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- DeleteB(n, BinarnoStablo);
- } //Delete
- //funkcije - OPCENITO STABLO:
- void osInit() {
- cout << "10. Inicijalizirati opcenito stablo (InitT)" << endl << endl;
- int x = 1;
- cout << "Unesite vrijednost korijena: ";
- cin >> x;
- OpcenitoStablo = (pstablo)malloc(sizeof(stablo));
- InitT(x, OpcenitoStablo);
- } //Init
- void osParent() {
- cout << "11. Naci roditelja opcenitog stabla (ParentT)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost cvora: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0) cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cvor p = ParentT(n, OpcenitoStablo);
- if (p != 0)
- cout << "Roditelj cvora " << x << " je " << LabelT(p, OpcenitoStablo) << endl << endl;
- else
- cout << "Roditelj nije naden! Cvor je korijen stabla." << endl << endl;
- wait();
- } //Parent
- void osFirstChild() {
- cout << "12. Nadi prvo dijete opcenitog stabla(FirstChildT)" << endl << endl;
- int x;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cvor c = FirstChildT(n, OpcenitoStablo);
- if (c != 0)
- cout << "Prvo dijete: " << LabelT(c, OpcenitoStablo) << endl << endl;
- else
- cout << "Prvo dijete: <PRAZNO>" << endl << endl;
- wait();
- } //FirstChild
- void osNextSibling() {
- cout << "13. Nadi sljedeceg brata opcenitog stabla (NextSiblingT)" << endl << endl;
- int x;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost cvora: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cvor c = NextSiblingT(n, OpcenitoStablo);
- if (c != 0)
- cout << "Sljedeci brat: " << LabelT(c, OpcenitoStablo) << endl << endl;
- else
- cout << "Sljedeci brat: <PRAZNO>" << endl << endl;
- wait();
- } //NextSibling
- void osCreateChild() {
- cout << "14. Napraviti dijete opcenitog stabla (CreateT)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost roditelja: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji! Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cout << "Unesite vrijednost djeteta: ";
- cin >> d;
- CreateT(d, n, OpcenitoStablo);
- } //CreateChild
- void osLabel() {
- cout << "15. Vrijednost cvora opcenitog stabla (LabelT)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite trazeni cvor: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- cout << "Vrijednost cvora: " << LabelT(n, OpcenitoStablo) << endl << endl;
- wait();
- } //Label
- void osChangeLabel() {
- cout << "16. Promijeni vrijednost cvora opcenitog stabla (ChangeLabelT)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite staru vrijednost cvora: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //ChangeLabel
- if (x == -1)
- return;
- cout << "Unesite novu vrijednost cvora: ";
- cin >> d;
- ChangeLabelT(d, n, OpcenitoStablo);
- } //ChangeLabel
- void osRoot() {
- cout << "17. Nadi korijen opcenitog stabla (RootT)" << endl << endl;
- cvor t = RootT(OpcenitoStablo);
- cout << "Korijen: " << LabelT(t, OpcenitoStablo) << endl << endl;
- wait();
- } //Root
- void osDelete() {
- cout << "18. Obrisati cvor opcenitog stabla(DeleteT)" << endl << endl;
- int x, d;
- cvor n = 0;
- while ((n == 0) && (x != -1)) {
- cout << "Unesite vrijednost cvora: ";
- cin >> x;
- n = FindLabelT(x, OpcenitoStablo);
- if (n == 0)
- cout << "Cvor " << x << " ne postoji. Unesite postojeci cvor ili -1 za izlazak." << endl << endl;
- } //while
- if (x == -1)
- return;
- DeleteT(n, OpcenitoStablo);
- } //Delete
- int main(int argc, char *argv[]) {
- int izbor = 20;
- do {
- cout << "BINARNO STABLO: " << endl << endl;
- cout << "0. Inicijalizirati stablo (InitB)" << endl;
- cout << "1. Nadi roditelja (ParentB)" << endl;
- cout << "2. Nadi lijevo dijete (LeftChildB)" << endl;
- cout << "3. Nadi desno dijete (RightChildB)" << endl;
- cout << "4. Napraviti lijevo dijete (CreateLeftB)" << endl;
- cout << "5. Napraviti desno dijete (CreateRightB)" << endl;
- cout << "6. Vrijednost cvora (LabelB)" << endl;
- cout << "7. Promijeniti vrijednost cvora (ChangeLabelB)" << endl;
- cout << "8. Nadi korijen (RootB)" << endl;
- cout << "9. Obrisati cvor (DeleteB)" << endl << endl;
- cout << "OPCENITO STABLO" << endl << endl;
- cout << "10. Inicijalizirati stablo (InitT)" << endl;
- cout << "11. Nadi roditelja (ParentT)" << endl;
- cout << "12. Nadi prvo dijete (FirstChildT)" << endl;
- cout << "13. Nadi sljedeceg brata (NextSiblingT)" << endl;
- cout << "14. Napraviti dijete (CreateT)" << endl;
- cout << "15. Vrijednost cvora (LabelT)" << endl;
- cout << "16. Promijeniti vrijednost cvora (ChangeLabelT)" << endl;
- cout << "17. Nadi korijen (RootT)" << endl;
- cout << "18. Obrisati cvor (DeleteT)" << endl << endl;
- cout << "20. Izlaz" << endl;
- cout << "Vas izbor je: ";
- cin >> izbor;
- switch (izbor){
- case 0:
- bsInit();
- break;
- case 1:
- bsParent();
- break;
- case 2:
- bsLeftNode();
- break;
- case 3:
- bsRightNode();
- break;
- case 4:
- bsCreateLeft();
- break;
- case 5:
- bsCreateRight();
- break;
- case 6:
- bsLabel();
- break;
- case 7:
- bsChangeLabel();
- break;
- case 8:
- bsRoot();
- break;
- case 9:
- bsDelete();
- break;
- case 10:
- osInit();
- break;
- case 11:
- osParent();
- break;
- case 12:
- osFirstChild();
- break;
- case 13:
- osNextSibling();
- break;
- case 14:
- osCreateChild();
- break;
- case 15:
- osLabel();
- break;
- case 16:
- osChangeLabel();
- break;
- case 17:
- osRoot();
- break;
- case 18:
- osDelete();
- break;
- } //switch
- } while (izbor != 20);
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment