[C] garder une référence pour pouvoir free

Discussion dans 'Web, design' créé par horny, 18 Avril 2014.

  1. Offline
    horny Elite
    Dans le cadre d'un projet je dois coder un arbre binaire pour en faire un dictionnaire
    Dans mes fonctions j'ai
    removeWord(BST* tree, char* word)
    qui me pose des soucis

    Je n'arrive pas à garder une référence vers le nœud que je vire de l'arbre pour pouvoir le free ensuite
    Je ne garde qu'un seul cas dans le code d'après, pas besoin de tout le code
    Si j'arrive à le résoudre j'arriverai à résoudre les autres .. normalement :[]

    removeWord(BST* tree, char* word)
    {
    BST* matchWord = getWord(tree, word); //renvoi un pointeur vers le noeud qui contient le mot
    if (matchWord->rightSon == NULL)
    {
    *tree = *(transplant(tree, matchWord, matchWord->leftSon));
    }
    free(matchWord); //matchWord pointe vers la nouvelle racine de l'arbre donc pas bon ...
    }

    BST* transplant(BST* tree, BST* first, BST* second)
    {
    if (first-> parent == NULL)
    {
    tree = second; //ici wordMatch devient second aussi et je veux pas
    }
    return tree;
    }

    Quelqu'un saurait me dire comment faire ?
    horny, 18 Avril 2014
    #1