inserer un mot dans une table de hachage
bonjour j'ai un souci dans mon code,
jai fait une fonction qui lit les mots à partir d'un texte , les stocker dans une table de hachage.
voila la structure de la table de hachage :
Code:
1 2 3 4 5 6 7
| typedef struct L
{
int freq;
char mot[50];
struct L *suivant;
} Liste; |
là yaura une condition avant l'insertion du mot, on verifie s'il existe avavnt si c'est le cas on incremente la frequence du mot sinon on l'insere.
voilà le bout du code de la fonction
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void insere_th(Liste **TableHash, const char *mot)
{
TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *));
/* calcule le hash du mot */
unsigned int idx = hash_cle(mot);
Liste *p = (Liste *)malloc(sizeof(Liste));
/* recherche du mot */
p = TableHash[idx];
while(p !=NULL)
{
p->freq = 1; //incrementtaion de la frequence
strncpy(p->mot, mot, sizeof(p->mot));
}
free(TableHash);
} |
aide svp ?
merci :)
erreur de segmentation dans l'initialisation de la table de hachage
bonjour à tous,
j'ai une focntion qui cree une table de hachage, afin de stocker les mots du texte la dedans,
mais je suis surprise, que dans la fonction yavait une erreur de segmentation dans l'instruction :
j'ai voulu l'initialiser mais apprement cest faux ma methode d'initialisation
quelqu'un peut m'aider svp?
merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| void insere_th(Liste **TableHash, const char *mot)
{
TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *));
/* calcule le hash du mot */
unsigned int idx = hash_cle(mot);
Liste *p = (Liste *)malloc(sizeof(Liste));
/* recherche du mot */
p = TableHash[idx];
while(p !=NULL)
{
p->freq = 1;
strncpy(p->mot, mot, sizeof(p->mot));
}
free(TableHash);
free(p);
} |