Bonsoir à tous.
Voici la fonction pour supprimer un noeud d'un arbre binaire de recherche:
Seulement dès que je compile j'ai ce message:Code:noeud Supprimer(noeud **arbre, int info){ >-------noeud *noeud = arbre; >-------noeud *pere = &arbre; >-------noeud *nouveau_noeud; >-------noeud *nouveau_pere; >-------while(noeud != NULL){ >------->-------if(info == noeud->info){ >------->------->-------break; >------->------->-------} >------->------->-------if(info < noeud->info){ >------->------->------->-------pere = &noeud->left; >------->------->------->-------noeud = noeud->left; >------->------->-------}else >------->------->-------{ >------->------->------->-------pere = &noeud->right; >------->------->------->-------noeud = noeud->right; >------->------->-------} >------->-------} >------->-------if (noeud != NULL){ >------->------->-------if (noeud->left == NULL){ >------->------->------->-------if (noeud->right == NULL){ >------->------->------->------->-------*pere = NULL; >------->------->------->------->-------free(noeud); >------->------->------->-------} >------->------->------->-------else >------->------->------->-------{ >------->------->------->------->-------*pere =noeud -> right; >------->------->------->------->-------free(noeud); >------->------->------->-------} >------->------->-------} >------->------->-------else{ >------->------->------->-------if (noeud->right == NULL){ >------->------->------->------->-------*pere = noeud->left; >------->------->------->------->-------free(noeud); >------->------->------->-------} >------->------->-------else >------->------->-------{ >------->------->------->-------nouveau_noeud = noeud->right; >------->------->-------nouveau_pere= &noeud->right; >------->------->-------while(nouveau_noeud!= NULL) >------->------->------->-------if (nouveau_noeud->left != NULL){ >------->------->------->------->-------nouveau_pere = &nouveau_noeud->left; >------->------->------->------->-------nouveau_noeud = nouveau_noeud->left; >------->------->------->-------} >------->------->-------noeud->info = nouveau_noeud->info; >------->------->-------*nouveau_pere = nouveau_noeud->right; >------->------->-------free(nouveau_noeud); >------->-------} >-------} } return arbre; }
binaire.c:94: warning: initialization from incompatible pointer type
binaire.c:95: error: ‘pere’ undeclared (first use in this function)
binaire.c:95: error: (Each undeclared identifier is reported only once
binaire.c:95: error: for each function it appears in.)
binaire.c:96: error: ‘nouveau_noeud’ undeclared (first use in this function)
binaire.c:97: error: ‘nouveau_pere’ undeclared (first use in this function)
Je ne comprends pas d'où viennent ces problèmes de déclaration, sachant qu'au début j'ai bien déclaré pere, nouveau_noeud et nouveau_pere de type noeud ..
Merci d'avance pour votre aide
-----