From a9f4fc48bc4e528279a644a45f500327d7814976 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 3 Apr 2017 16:42:57 +0200 Subject: [PATCH] TP6: n ary tree add remove function MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- TP6/arbres/arbre_n_aire/arbre_n_aire.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/TP6/arbres/arbre_n_aire/arbre_n_aire.c b/TP6/arbres/arbre_n_aire/arbre_n_aire.c index 795aa63..7713d72 100644 --- a/TP6/arbres/arbre_n_aire/arbre_n_aire.c +++ b/TP6/arbres/arbre_n_aire/arbre_n_aire.c @@ -94,7 +94,7 @@ void affiche(NOEUD * p, char *mot, int i) /* Visualisation de l'arbre n-aire *******************************************/ void affiche_arbre(NOEUD * p, int prof) -/* prof est utilise pour decaller l'affichage avec des espaces (selon le niveau dans l'arbre) */ +/* prof est utilise pour decaller l'affichage avec des espaces (selon le niveau dans l'arbre) */ { int i; @@ -112,8 +112,19 @@ void affiche_arbre(NOEUD * p, int prof) NOEUD *supprime(NOEUD * p, char *mot, int i) /* i est l'indice de la lettre courante dans le mot */ { - /* TODO */ - return p; + if (p) { + if (p->lettre < mot[i]) { + p->frere = supprime(p->frere, mot, i); + } else if (p->lettre == mot[i]) { + p->fils = supprime(p->fils, mot, i + 1); + if (!p->fils) { + NOEUD *p1 = p; + p = p->frere; + free(p1); + } + return p; + } + } } /* Destruction des arbres de racine p en recuperant la place occupee (free) par chacun des noeuds */ @@ -198,6 +209,8 @@ int main(int argc, char *argv[]) if (recherche(arbre, "salut", 0)) printf("mot \"salut\" present\n"); sauve_dico(arbre, "dictionnaire_debug", nb_mots); + supprime(arbre, "zazou", 0); + affiche_arbre(arbre, 0); detruis_arbre(arbre); if (!arbre) affiche_arbre(arbre, 0); -- 2.34.1