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: Fix some memleaks
[Algorithmic_C.git]
/
TP6
/
arbres
/
arbre_n_aire_c2
/
arbre_n_aire_correction.c
diff --git
a/TP6/arbres/arbre_n_aire_c2/arbre_n_aire_correction.c
b/TP6/arbres/arbre_n_aire_c2/arbre_n_aire_correction.c
index 71cb523144f8091d5ea4cbcbfdccbd047287d2c9..08f4e17f6b3085cc46daab3bc4a5bf25f4b0854e 100644
(file)
--- a/
TP6/arbres/arbre_n_aire_c2/arbre_n_aire_correction.c
+++ b/
TP6/arbres/arbre_n_aire_c2/arbre_n_aire_correction.c
@@
-40,7
+40,6
@@
NOEUD *recherche(NOEUD * p, char *mot)
return cherche(p, mot, 0);
}
return cherche(p, mot, 0);
}
-
/* Création d'une fin de mot - liste chaînée suivant le lien fils **********/
NOEUD *insere_fin(char *mot, int i)
{
/* Création d'une fin de mot - liste chaînée suivant le lien fils **********/
NOEUD *insere_fin(char *mot, int i)
{
@@
-153,6
+152,20
@@
NOEUD *supprime(NOEUD * p, char *mot, int i)
return p;
}
return p;
}
+
+NOEUD *detruis_arbre(NOEUD * p)
+{
+ if (p == NULL)
+ return p;
+ else {
+ p->fils = detruis_arbre(p->fils);
+ p->frere = detruis_arbre(p->frere);
+ free(p);
+ p = NULL;
+ return p;
+ }
+}
+
/*****************************************************************************/
NOEUD *charge_dico(char *nom_fichier, int *nb_mots)
{
/*****************************************************************************/
NOEUD *charge_dico(char *nom_fichier, int *nb_mots)
{
@@
-236,7
+249,7
@@
int Lectmot(FILE * fp, char *mot)
Un exemple d'utilisation :
./arbre_n_aire dictionnaire.txt mondico.txt letexte.txt motsinconnus.txt
Un exemple d'utilisation :
./arbre_n_aire dictionnaire.txt mondico.txt letexte.txt motsinconnus.txt
-Les rguments de la ligne de commande sont :
+Les
a
rguments de la ligne de commande sont :
argv[1] est le nom du dictionnaire d'entree
argv[2] est le nom du dictionnaire apres insertion des nouveaux mots
argv[3] est le texte a verifier
argv[1] est le nom du dictionnaire d'entree
argv[2] est le nom du dictionnaire apres insertion des nouveaux mots
argv[3] est le texte a verifier
@@
-290,7
+303,7
@@
int main(int argc, char *argv[])
sauve_dico(rac, argv[2], nb_mots);
sauve_dico(rac, argv[2], nb_mots);
-/* pour tester la suppression */
+
/* pour tester la suppression */
do {
printf("Entrez un mot a supprimer (stop pour arreter) : ");
scanf("%s", mot);
do {
printf("Entrez un mot a supprimer (stop pour arreter) : ");
scanf("%s", mot);
@@
-299,6
+312,8
@@
int main(int argc, char *argv[])
affiche_fich(stdout, rac, mot, 0);
}
} while (strcmp(mot, "stop"));
affiche_fich(stdout, rac, mot, 0);
}
} while (strcmp(mot, "stop"));
+
+ detruis_arbre(rac);
}
/****************************************************************************/
}
/****************************************************************************/