Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    [C++]Creazione albero

    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

  2. #2
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    che stupido... ho trovato l'errore da solo... posto il codice correto:
    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 = 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
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.