Commit 7ab3be6b53c797db7d18d6f61d34534b0fd947a4

Authored by Thorsieger
1 parent 03168857

debut free

Showing 4 changed files with 31 additions and 66 deletions   Show diff stats
dico_test 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +a
  2 +aa
  3 +abc
  4 +aabc
  5 +aa
  6 +ab
0 \ No newline at end of file 7 \ No newline at end of file
@@ -13,9 +13,12 @@ int main() @@ -13,9 +13,12 @@ int main()
13 tab[i]=NULL; 13 tab[i]=NULL;
14 } 14 }
15 15
16 - load_tree(fp,tab);//supprimer la case 16 + //supprimer la case avant de load
  17 + load_tree(fp,tab);//chargement de l'arbre
17 18
18 printf("Loading done!\n"); 19 printf("Loading done!\n");
  20 +
  21 + free_dico(tab);//libérer la mémoire
19 22
20 return 0; 23 return 0;
21 } 24 }
1 #include "tree.h" 1 #include "tree.h"
2 2
3 -/*  
4 -typedef struct node {  
5 - int val;  
6 - int fin;  
7 - struct node* fils[];  
8 - int nbr_fils;  
9 -}Node, *PtNode, *Tree;  
10 -  
11 -#include <stdio.h>  
12 -#include <stdlib.h>  
13 -  
14 -int main(){  
15 - int tmp;  
16 - tmp = getchar();  
17 - printf("%d\n",tmp);  
18 - return 0;  
19 -}  
20 -  
21 - */  
22 -  
23 void cons_tree(struct node ** ptr_tree, int val) 3 void cons_tree(struct node ** ptr_tree, int val)
24 { 4 {
25 *ptr_tree = malloc(sizeof(struct node)); 5 *ptr_tree = malloc(sizeof(struct node));
@@ -28,9 +8,6 @@ void cons_tree(struct node ** ptr_tree, int val) @@ -28,9 +8,6 @@ void cons_tree(struct node ** ptr_tree, int val)
28 (*ptr_tree)->nbr_fils=0; 8 (*ptr_tree)->nbr_fils=0;
29 (*ptr_tree)->fils = malloc(sizeof(struct node*)); 9 (*ptr_tree)->fils = malloc(sizeof(struct node*));
30 (*ptr_tree)->fils[0]=NULL; 10 (*ptr_tree)->fils[0]=NULL;
31 -  
32 - //(*ptr_tree)->fils = realloc(sizeof(struct node*)*nbr_fils);  
33 - //(*ptr_tree)->fils[nbr_fils];  
34 } 11 }
35 12
36 void mk_empty_tree(struct node **ptr_tree) 13 void mk_empty_tree(struct node **ptr_tree)
@@ -43,45 +20,6 @@ int is_leaf(struct node *tree) @@ -43,45 +20,6 @@ int is_leaf(struct node *tree)
43 return tree->fin||tree->fils[0]==NULL; 20 return tree->fin||tree->fils[0]==NULL;
44 } 21 }
45 22
46 -/*void add(struct node **tab_ptr_tree, char val[],int taille, int fl)  
47 -{  
48 - Node* node = tab_ptr_tree[fl];  
49 - for(int i=0;i<taille;i++)  
50 - {  
51 - if(node==NULL){  
52 - node = malloc(sizeof(struct node));  
53 - cons_tree(&node,val[i]);  
54 - printf("%d",node->val);  
55 - tab_ptr_tree[fl] = node;  
56 - continue;  
57 -  
58 - }  
59 - int trouve = -1;  
60 - for(int j=0;j<(node)->nbr_fils;j++)  
61 - {  
62 - if((node)->fils[j]->val==val[i])  
63 - {  
64 - trouve=j;  
65 - break;  
66 - }  
67 - }  
68 - if(trouve == -1)  
69 - {//ajouter fils  
70 - (node)->nbr_fils++;  
71 - (node)->fils = realloc((node)->fils,((node)->nbr_fils)*sizeof(struct node*));  
72 - cons_tree(&((node)->fils[((node)->nbr_fils)-1]),val[i]);  
73 - trouve = 0;  
74 - }  
75 - node = (node)->fils[trouve];  
76 - if(i==taille-1)  
77 - {  
78 - (node)->fin=1;  
79 - }  
80 - }  
81 - //mettre fin à 1 pour le bon  
82 - //if(i==taille-1)(*(tab_ptr_tree[fl]))->fin=1; //  
83 - }*/  
84 -  
85 void add(struct node **tab_ptr_tree, char val[],int taille, int fl) 23 void add(struct node **tab_ptr_tree, char val[],int taille, int fl)
86 { 24 {
87 if(tab_ptr_tree[fl]==NULL)cons_tree(&(tab_ptr_tree[fl]),val[0]+97); 25 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) @@ -137,7 +75,23 @@ void load_tree(FILE *fp, struct node **tab_ptr_tree)
137 if(ferror(fp)) printf("ERREUR de lecture\n"); 75 if(ferror(fp)) printf("ERREUR de lecture\n");
138 } 76 }
139 77
140 -void free_tree(struct node **ptr_tree) 78 +void free_tree(struct node *ptr_tree)
141 { 79 {
142 - 80 + for(int i=0;i<ptr_tree->nbr_fils;i++)
  81 + {
  82 + if(ptr_tree->fils[i]->nbr_fils!=0)free_tree(ptr_tree->fils[i]);
  83 + free(ptr_tree->fils[i]);
  84 + }
  85 + //free(ptr_tree);
  86 +}
  87 +
  88 +void free_dico(struct node **tab_ptr_tree)
  89 +{
  90 + for(int i=0;i<26;i++)
  91 + {
  92 + if(tab_ptr_tree[i]!=NULL)
  93 + {
  94 + free_tree(tab_ptr_tree[i]);
  95 + }
  96 + }
143 } 97 }
@@ -18,4 +18,6 @@ void add(struct node **, char* ,int ,int); @@ -18,4 +18,6 @@ void add(struct node **, char* ,int ,int);
18 18
19 void load_tree(FILE *, struct node **); 19 void load_tree(FILE *, struct node **);
20 20
21 -void free_tree(struct node **); 21 +void free_tree(struct node *);
  22 +
  23 +void free_dico(struct node **);