Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Esercizio alberi binari

    Buon pomeriggio. Sono nuovo del forum e mi scuso in anticipo se non ho rispettato qualche regola riguardo al forum.
    Espongo in breve il mio problema:
    ho intenzione di creare un programma in c utilizzando gli alberi binari ,dove il campo info della strutta albero punta ad una struttura con con vari tipi di dati non omogenei es(char int , tipo struttura). ho scritto il codice riguardante la funzione Talbero crea(). Appena mando in esecuzione il programma crasha all'istante. Ora quello che chiedo non è tanto un pezzo di codice buttato qui sopra, cosa che credo voi no facciate per principio. Vi sarei veramente grato se riusciste a farmi capire come posso risolvere questo problema anche generalizzandolo. Allego la parte del codice che non mi convince. Grazie ancora per l'attenzione.
    codice:
    Talbero crea(Talbero a, Tprodotto p)
    {
        char buff[30];
        if(a == NULL)
        {
            /* creazione del primo nodo*/
            printf("Inserisci il prodotto: \n");
            printf("Codice del prodotto:");
            scanf("%d", &(p.cod));
            printf("descrizione:");
            scanf("%s", buff);
            p.nome = malloc(strlen(buff)+1);
            strcpy(p.nome, buff);
            printf("Inserire la data di scadenza (aa mm): ");
            scanf("%d %d", &(p.data.anno), &(p.data.mese));
            a->sx= NULL;
            a->dx= NULL;
        }else{
            do{
        
            /* ricerca del punto di inserimento*/
            if(p.cod > a->info.cod)
            a->dx= crea(a->dx, p);
            else if(p.cod< a->info.cod)
            a->sx= crea(a->sx , p);
        }while(a->info.cod == NULL);
        }
    return a;
    }
    Ultima modifica di MItaly; 08-02-2016 a 19:08 Motivo: Tag CODE

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Inizializzi il prodotto solo se a == NULL, altrimenti lo usi per andare a destra o a sinistra (Da non inizializzato) ha senso?
    Non assegni mai il prodotto a nessun campo dell'albero, dove pensi di salvarlo?
    Nel punto in ci chiami la funzione assegni il valore di ritorno?
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Inizializzi il prodotto solo se a == NULL, altrimenti lo usi per andare a destra o a sinistra (Da non inizializzato) ha senso?
    Non assegni mai il prodotto a nessun campo dell'albero, dove pensi di salvarlo?
    Nel punto in ci chiami la funzione assegni il valore di ritorno?
    Grazie per la risposta, vuoi dirmi che nel campo info del nodo radice non viene memorizzata nessun Informazione?
    La funzione ritorna un tipo albero, quando richiamo la funzione nel main assegno la Funzione alla radice dell'albero! Ho anche pensato di usare il codice del prodotto come chiave per decidere in quale nodo figlio vadi il prodotto corrispondente!

Tag per questa discussione

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.