salve ragazzi.. ho appena fatto un albero... ma c'è un errore nella stampa... e sospetto pure il punto in cui si trova... ma non ne sono sicuro.... mi stampa solo l'ultimo elemento che inserisco.. dunque immagino che perdi la radice.... nessun errore di compilazione.. suggerimenti???
codice:
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
struct nodo{
char tel[10];
char cognome[10];
char nome[10];
nodo *sin,*des;
};
void inserisci (nodo *root, nodo *pn);
void stampa(nodo *root);
void main(){
nodo *testa = new nodo, *temp=testa;
int i,n;
system("CLS");
cout<<"Digita quanti amici vuoi inserire nella tua rubrica: ";
cin>>n;
for(i=0;i<n;i++){
cout<<"Digita il cognome del tuo amico: ";
cin>>temp->cognome;
cout<<"Digita il nome del tuo amico: ";
cin>>temp->nome;
cout<<"Digita il numero del tuo amico: ";
cin>>temp->tel;
cout<<endl;
if(i!=0) inserisci(testa,temp);
pn->sin=NULL;
pn->des=NULL;
}
stampa(testa);
delete testa;
system("PAUSE");
}
void inserisci (nodo *root,nodo *pn){
if (strcmp (root->cognome,pn->cognome)>=0)
if (root->sin==NULL)
root->sin=pn;
else
inserisci(root->sin,pn);
else
if (root->des==NULL)
root->des=pn;
else
inserisci(root->des,pn);
}
void stampa(nodo *root){
if(root!=NULL){
cout<<root->cognome;
stampa(root->sin);
stampa(root->des);
}
}
grazie