repositories
/
Algorithmic_C.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
TP6: n ary tree add remove function
[Algorithmic_C.git]
/
TP6
/
arbres
/
arbre_n_aire
/
arbre_n_aire.c
diff --git
a/TP6/arbres/arbre_n_aire/arbre_n_aire.c
b/TP6/arbres/arbre_n_aire/arbre_n_aire.c
index 795aa639326f2768d0cb4357b6dd3adf01abd1db..7713d7218ae1ae1d6dce1b7446dabbf69ec7860e 100644
(file)
--- 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)
/* 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;
{
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 */
{
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 */
}
/* 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);
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);
detruis_arbre(arbre);
if (!arbre)
affiche_arbre(arbre, 0);