Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QtCore/QCoreApplication>
- #include <iostream>
- using namespace std;
- void inizializza ();
- struct dato *generanodo ();
- int leggidati (dato *d);
- int confrontadati(dato a, dato *p);
- struct dato *trovanodo (dato a, struct dato *p);
- void stamparicorsiva (struct dato *p);
- void stampaalbero();
- void menu();
- struct dato
- {
- int num;
- dato *ptrdx, *ptrsx;
- };
- struct dato *radice;
- void inizializza ()
- {
- radice = NULL;
- }
- struct dato *generanodo ()
- {
- dato *p = NULL;
- dato a;
- int fine;
- fine = leggidati(&a);
- while(fine!=0)
- {
- trovanodo(a,p);
- }
- return p;
- }
- int leggidati (dato *d)
- {
- cout<<"Inserisci il numero che vuoi inserire.\n";
- cin>> d->num;
- return 1;
- }
- int confrontadati(dato a, dato *p)
- {
- if(a.num<p->num)
- {
- return 1;
- }
- else if(a.num>p->num)
- {
- return 2;
- }
- else if(a.num==p->num)
- {
- return 3;
- }
- }
- struct dato *trovanodo (dato a, struct dato *p)
- {
- if (p==NULL)
- {
- p = new struct dato;
- p->num = a;
- p->ptrsx = NULL;
- p->ptrdx = NULL;
- }
- else
- {
- switch (confrontadati(a, p->num))
- {
- case 1:
- p->ptrsx = trovanodo(a, p->ptrsx);
- break;
- case 2:
- p->ptrdx = trovanodo(a, p->ptrdx);
- break;
- case 3:
- cout<< "Dato già presente, non inserito."<<endl;
- }
- }
- return p;
- }
- void stamparicorsiva (struct dato *p)
- {
- if(p!=NULL)
- {
- stamparicorsiva(p->ptrsx);
- leggidati(p->num);
- stamparicorsiva(p->ptrdx);
- }
- return;
- }
- void stampaalbero()
- {
- cout<<"Stampa ordinata:"<<endl;
- stamparicorsiva(radice);
- return;
- }
- void menu()
- {
- cout<<"Scegli il numero corrispondente all'operazione da eseguire:\n";
- cout<<"1) Inserisci nodo;\n";
- cout<<"2) Ricerca nodo;\n";
- cout<<"3) Visualizza l'albero in InOrder;\n";
- cin>>risp;
- switch(risp)
- {
- case 1:
- generanodo();
- case 3:
- stampaalbero();
- }
- }
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- cout<<"Benvenuto al programma per la gestione di un albero binario;\n";
- menu();
- return a.exec();
- }
Add Comment
Please, Sign In to add comment