Anteprima
Vedrai una selezione di 1 pagina su 5
Programma C++ - Albero versione 1 Pag. 1
1 su 5
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Albero.

Semplice programmino in C++ che tratta gli alberi, in questo programma si puo lavorare su un albero creandolo,modificandolo stampando a video e tante altre funzioni.
Estratto del documento

void tree::inserisci(int x)

{ insert(testa,x);

}

void tree::insert(nodo* &p,int x)

{ if(!p)

{ p=new nodo;

p->x=x;

p->sx=NULL;

p->dx=NULL;

}

else

if(x<=p->x)

insert(p->sx,x);

else

insert(p->dx,x);

}

void tree::visual()

{ print(testa);

}

void tree::print(nodo* &p)

{ if(!p)

cout<<"\n L'albero e' vuoto";

else

{ print(p->sx);

print(p->dx);

cout<<p->x<<endl;

}

}

void tree::cancella()

{ deltree(testa);

testa=NULL;

}

void tree::deltree(nodo* &p)

{ if(p)

{ deltree(p->sx);

deltree(p->dx);

delete p;

}

}

void tree::operator=(const tree &ob)

{ deltree(testa);

copia(ob.testa,testa);

}

tree tree::operator++()

{ add(testa,1);

return *this;

}

void tree::add(nodo* &p,int x)

{ if(p)

{ p->x=p->x+x;

add(p->sx,x);

add(p->dx,x);

}

}

tree tree::operator+(int x)

{ tree temp;

copia(temp.testa,testa);

temp.inserisci(x);

return temp;

}

void tree::visita(int x)

{ if(x==1) visitaord(testa);

if(x==2) visitapostord(testa);

if(x==3) visitapreord(testa);

}

void tree::visitaord(nodo* p)

{ if(p)

{ visitaord(p->sx);

cout<<"\n l'elemento e': "<<p->x<<endl;

visitaord(p->dx);

}

}

void tree::visitapostord(nodo* p)

{ if(p)

{ visitapostord(p->sx);

visitapostord(p->dx);

cout<<"\n l'elemento e': "<<p->x<<endl;

}

}

void tree::visitapreord(nodo* p)

{ if(p)

{ cout<<"\n l'elemento e': "<<p->x<<endl;

visitapreord(p->sx);

visitapreord(p->dx);

}

}

int conta(nodo* p)

{ if(p)

return(1+conta(p->sx)+conta(p->dx));

else

return 0;

}

void contafoglie(tree &ob)

{ int n;

n=conta(ob.testa);

if(n)

cout<<"\n Il numero di foglie e' "<<n<<endl;

else

cout<<"\n Non ci sono nodi nell'albero!"<<endl;

} main()

{ tree albero;

int elemento,scelta,scelta2,cont,val;

cont = 1;

while(cont)

{ cout<<"\n -OPTIONS- ";

cout<<"\n 1. Inserisci elemento";

cout<<"\n 2. Visualizza l'albero";

cout<<"\n 3. Costr. copy";

cout<<"\n 4. Somma di un elemento all'albero";

cout<<"\n 5. Cancella albero";

cout<<"\n 6. Conta numero foglie";

cout<<"\n 7. Visita albero";

cout<<"\n 8. Esci dal programma";

cout<<"\n\nInserisci la tua scelta: ";

cin >> scelta;

if(scelta==1)

{ cout<<"\nDai l'elemento da inserire: ";

cin>>elemento; cout<<"\n Grazie!";

albero.inserisci(elemento);

}

if(scelta==2)

albero.visual();

if(scelta==3)

{ cout<<"\nUtilizzo costruttore copy...";

tree albero2 = albero;

albero2.visual();

cout<<"\nCostruttore copy utilizzato!";

}

if(scelta==4)

{ cout<<"\nInserisci l'elemento da sommare: ";

cin>>val;

albero=albero+val;

cout<<"\nOverloading somma effettuata!";

}

if(scelta==5)

albero.cancella();

if(scelta==6)

contafoglie(albero);

if(scelta==7)

{ cout<<"\n -VISITA-";

cout<<"\n digita 1 per visita in ordine";

cout<<"\n digita 2 per visita in postordine";

cout<<"\n digita 3 per visita in preordine";

Dettagli
Publisher
5 pagine
220 download