tree.c
1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define size 50
#define taille 26
struct Noeud { char valeur;struct liste * fils; char complet;};
struct liste { struct Noeud * noeud; struct liste * suivant;};
struct dico {struct Noeud tableau[26];int dernier;};
typedef struct liste * liste;
typedef struct Noeud Noeud;
Noeud cons_noeud (char a)
{
Noeud * N = malloc(sizeof(struct Noeud));
N->valeur=a;
N->fils=NULL;
N->complet=0;
return * N;
}
void ajout_lettre (Noeud * N , char a)
{
if(N==NULL)
cons_noeud(a);
else
{ ((N->fils)->noeud)->valeur=a;
((N->fils)->noeud)->fils=NULL;
}
}
//Reprendre cette fonction!
void ajout_mot (struct dico * D, char mot[size])
{
Noeud *N;
for (int j=0;j<D->dernier;j++)
{ if(D->tableau[j].valeur== mot[0])
{
*N=D->tableau[j];
}
else
{
*N=cons_noeud(mot[0]);
}
for (int i=0; i<size; i++)
{
ajout_lettre (N,mot[i]);
N=N->fils->noeud;
}
N->complet=1;
}
}
void cons_dico(FILE* fp, struct dico* D)
{ char a;
D->dernier=-1;
if(fp==NULL)
return;
while(fscanf(fp,"%s",&a)!=EOF)
{ ajout_mot(D,&a);
D->dernier++;}
}
int rech_mot(struct dico D,char mot [size])
{
Noeud N;
D.dernier=-1;
for(int i=0;i<D.dernier;i++)
{
if(D.tableau[i].valeur==mot[0])
{
N=D.tableau[i];
for(int j=0;j<size;j++)
{
if(N.valeur==mot[j])
*N=N->fils->noeud;
}
return 1;
if(N.complet=1)
return 1;
}
else
return 0;
}
}