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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| noeud* ajouter_lettre (noeud *A, char c)
{
noeud *O, *T, *R;
O = malloc(sizeof(*O));
O->lettre = c;
O->frere = NULL;
O->fils = NULL;
int *i;
i = 0;
if (A->lettre == '#') //si on rencontre # on va alors créer un frere de ce mot
{
if (A->frere == NULL) //s'il n y en a pas
{
A->frere = O;
}
else
{
A = A->frere; //sinon on passe au frere de ce mot et on tente la même opération
R = ajouter_lettre (A, c);
}
}
else
{
if (A->lettre == c) //si on rencontre la lettre qu'on veut insérer, on arrête car la lettre est déjà présente dans l'arbre
{
R = A;
}
else
{
if (A->lettre < c) //si on rencontre une lettre plus petite que celle que l'on veut insérer
{
T = A->frere; //on décale le frere en insérant le nouveau noued
A->frere = O;
O->frere = T;
R = O;
i++;
}
else
{
if (i = 0) //si on arrive tout de suite a une lettre plus grande que celle qu'on veut insérer
//on décale le frere en insérant le nouveau noued
O->lettre = A->lettre;
O->frere = A->frere;
O-fils = A->fils;
A->lettre = c;
R = ajouter_lettre (A, c);
}
}
}
}
return R;
} |
Partager