PDA

Visualizza la versione completa : [C++] Creazione di un albero ed errori nella sua stampa


Il Pazzo
14-02-2007, 00:17
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???



#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

Il Pazzo
14-02-2007, 07:57
che stupido... ho trovato l'errore da solo... posto il codice correto:


#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 = NULL, *temp = testa;
int i,n;

system("CLS");

cout<<"Digita quanti amici vuoi inserire nella tua rubrica: ";
cin>>n;

for(i=0;i<n;i++){
temp = new nodo;
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;

temp->sin=NULL;
temp->des=NULL;

if(i!=0)
inserisci(testa,temp);
else
testa= temp;

}

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);
}
}



Non allocavo la memoria... sistemato tutto :D
grazie

Loading