Problema alberi binari e allocazione dinamica

di il
2 risposte

Problema alberi binari e allocazione dinamica

Buonasera, sto cercando di implementare un albero BST in C con relative funzioni di inserimento, ricerca e cancellazione.
1 ) definisco la struttura:

struct Nodo{
    int value;
    struct Nodo* left_child;
    struct Nodo* right_child;
    struct Nodo* p;
};
struct Tree{

    int cardinality;
    struct Nodo* root;
};
2 ) funzione per allocare la struttura

void TreeCreate(struct Tree* tree){
    tree = (struct Tree*)malloc(sizeof(struct Tree));
}
3) main

struct Tree tree;
TreeCreate(&tree);
ed ora il mio quesito...
tramite debug del codice mi sono accorto che nella funzione TreeCreate dopo aver allocato la struttura,
tree->cardinality (numero di nodi) è pari a 0 mentre all' uscita cambia e assume valore indefinito ( es : 15774463 ). qualcuno sarebbe così gentile da spiegarmi il perchè ?

2 Risposte

  • Re: Problema alberi binari e allocazione dinamica

    Rivedi il codice
    
    void TreeCreate(struct Tree** tree) {
        *tree = (struct Tree*)malloc(sizeof(struct Tree));
        (*tree)->cardinality = 0;
    }
    
    int main()
    {
        struct Tree *tree;
        TreeCreate(&tree);
        printf("%d\n", tree->cardinality);
    }
    
  • Re: Problema alberi binari e allocazione dinamica

    Risolto... devo allocare memoria per il nodo , non per l' albero. che sciocco, e pensare che ci ho sbattuto la testa non poco
Devi accedere o registrarti per scrivere nel forum
2 risposte