From 7ab3be6b53c797db7d18d6f61d34534b0fd947a4 Mon Sep 17 00:00:00 2001 From: Thorsieger Date: Sun, 7 Apr 2019 23:03:12 +0200 Subject: [PATCH] debut free --- dico_test | 6 ++++++ main.c | 5 ++++- tree.c | 82 ++++++++++++++++++---------------------------------------------------------------- tree.h | 4 +++- 4 files changed, 31 insertions(+), 66 deletions(-) create mode 100644 dico_test diff --git a/dico_test b/dico_test new file mode 100644 index 0000000..0ca773b --- /dev/null +++ b/dico_test @@ -0,0 +1,6 @@ +a +aa +abc +aabc +aa +ab \ No newline at end of file diff --git a/main.c b/main.c index e8b04b7..1acc77b 100644 --- a/main.c +++ b/main.c @@ -13,9 +13,12 @@ int main() tab[i]=NULL; } - load_tree(fp,tab);//supprimer la case + //supprimer la case avant de load + load_tree(fp,tab);//chargement de l'arbre printf("Loading done!\n"); + + free_dico(tab);//libérer la mémoire return 0; } diff --git a/tree.c b/tree.c index 589669c..65c73f9 100644 --- a/tree.c +++ b/tree.c @@ -1,25 +1,5 @@ #include "tree.h" -/* -typedef struct node { - int val; - int fin; - struct node* fils[]; - int nbr_fils; -}Node, *PtNode, *Tree; - -#include -#include - -int main(){ - int tmp; - tmp = getchar(); - printf("%d\n",tmp); - return 0; -} - - */ - void cons_tree(struct node ** ptr_tree, int val) { *ptr_tree = malloc(sizeof(struct node)); @@ -28,9 +8,6 @@ void cons_tree(struct node ** ptr_tree, int val) (*ptr_tree)->nbr_fils=0; (*ptr_tree)->fils = malloc(sizeof(struct node*)); (*ptr_tree)->fils[0]=NULL; - - //(*ptr_tree)->fils = realloc(sizeof(struct node*)*nbr_fils); - //(*ptr_tree)->fils[nbr_fils]; } void mk_empty_tree(struct node **ptr_tree) @@ -43,45 +20,6 @@ int is_leaf(struct node *tree) return tree->fin||tree->fils[0]==NULL; } -/*void add(struct node **tab_ptr_tree, char val[],int taille, int fl) -{ - Node* node = tab_ptr_tree[fl]; - for(int i=0;ival); - tab_ptr_tree[fl] = node; - continue; - - } - int trouve = -1; - for(int j=0;j<(node)->nbr_fils;j++) - { - if((node)->fils[j]->val==val[i]) - { - trouve=j; - break; - } - } - if(trouve == -1) - {//ajouter fils - (node)->nbr_fils++; - (node)->fils = realloc((node)->fils,((node)->nbr_fils)*sizeof(struct node*)); - cons_tree(&((node)->fils[((node)->nbr_fils)-1]),val[i]); - trouve = 0; - } - node = (node)->fils[trouve]; - if(i==taille-1) - { - (node)->fin=1; - } - } - //mettre fin à 1 pour le bon - //if(i==taille-1)(*(tab_ptr_tree[fl]))->fin=1; // - }*/ - void add(struct node **tab_ptr_tree, char val[],int taille, int fl) { if(tab_ptr_tree[fl]==NULL)cons_tree(&(tab_ptr_tree[fl]),val[0]+97); @@ -137,7 +75,23 @@ void load_tree(FILE *fp, struct node **tab_ptr_tree) if(ferror(fp)) printf("ERREUR de lecture\n"); } -void free_tree(struct node **ptr_tree) +void free_tree(struct node *ptr_tree) { - + for(int i=0;inbr_fils;i++) + { + if(ptr_tree->fils[i]->nbr_fils!=0)free_tree(ptr_tree->fils[i]); + free(ptr_tree->fils[i]); + } + //free(ptr_tree); +} + +void free_dico(struct node **tab_ptr_tree) +{ + for(int i=0;i<26;i++) + { + if(tab_ptr_tree[i]!=NULL) + { + free_tree(tab_ptr_tree[i]); + } + } } diff --git a/tree.h b/tree.h index 83cba76..6038322 100644 --- a/tree.h +++ b/tree.h @@ -18,4 +18,6 @@ void add(struct node **, char* ,int ,int); void load_tree(FILE *, struct node **); -void free_tree(struct node **); +void free_tree(struct node *); + +void free_dico(struct node **); -- libgit2 0.21.2