Déja, pourquoi tu précède ta variable dynamique d'un *?
Et si tu le fait, alors tu doit utiliser . au lieu de -> non?
Enfin, pas de return Racine ou return NULL
Ta fonction est une fonction void, qui modifier l'objet en paramêttre, et non qui en créé un nouveau. Il faut bien penser que ta fonction s'apelle elle même.
Enfin, pour terminer, pas de racine = change, seulement un change avec les paramêtres. VOici un code coriger(pas tester
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
void Modif(Arbre *racine, char X, Arbre Nouveau)
{
if(racine == NULL) return;
if(racine->lettre == X)
{
racine->lettre = Nouveau.lettre;
racine->gauche = Nouveau.gauche;
racine->droit = Nouveau.droit;
}
else
{
//Si gauche et droite est un arbre dinamique, on remplace & par &*
racine = Modif(&(racine->gauche),X,Nouveau);
racine = Modif(&(racine->droit),X,Nouveau);
}
}
//Call :
Arbre Link;
Arbre Change;
Modif(&Link,Change);
//Call :
Arbre *Link;
Arbre *Change;
Modif(&*Link,*Change); |
Partager