if (p == NULL) {
return insere_fin(mot, i);
} else if (p->lettre == mot[i]) {
- if (mot[i]) {
+ if (mot[i] == '\0') {
p->fils = insere(p->fils, mot, i + 1);
} else {
printf("The word is already here\n");
return p;
}
+
/*****************************************************************************/
NOEUD *charge_dico(char *nom_fichier, int *nb_mots)
{
}
+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;
+ }
+}
+
+
/*****************************************************************************/
void sauve_dico(NOEUD * p, char *nom_fichier, int nb_mots)
{
} while (strcmp(mot, "0"));
/* affiche_fich(stdout,arbre,mot,0); */
+ detruis_arbre(arbre);
}
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)
{
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)
{
Un exemple d'utilisation :
./arbre_n_aire dictionnaire.txt mondico.txt letexte.txt motsinconnus.txt
-Les rguments de la ligne de commande sont :
+Les arguments 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
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);
affiche_fich(stdout, rac, mot, 0);
}
} while (strcmp(mot, "stop"));
+
+ detruis_arbre(rac);
}
/****************************************************************************/