Table de hachage

cyrina -  
 cyrina -
Bonjour,
J'ai un petit souci et je compte sur vous pour me trouver une solution.
j'ai une liste de mots stocké dans une liste chainées, le probleme c'est que j'aime les stocker dans une table de hachage.
sachant que j'ai pas de redondance des mots.
chaque element de la liste chainé contient le mot et la liste des position dans le texte.
MA question est comment choisr le clé de hachage.
merci!

4 réponses

cyrina
 
PS: je programme en C
:)
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

il faut faire une fonction de hachage
0
cyrina
 
merci Lami, c ca mon pb, je sais pas comment procéder;
tu peux m'aider stp?
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Voici un exemple
#include<stdio.h>
#include<stdlib.h>

#define TAILLE 101

unsigned hash_cle(char *chaine);

int main()
{
        char *chaine;
        unsigned int valhash;

        if((chaine = (char *) malloc (50 * sizeof(char)))
                        == NULL)
                return -1;
        printf("Entrez une clé : ");
        scanf("%s",chaine);
        valhash = hash_cle(chaine);
        printf("Cle = %s; Valhash : %u\n",chaine,valhash);
        return -1;
}

unsigned hash_cle(char *chaine){
        unsigned i;
        for(i=0;*chaine != '\0';++chaine)
                i = *chaine + 31 * i;
        return i%TAILLE;
}

0
cyrina
 
merci Lami, mais le pb c que je connais pas d'avance la taille de la table; la taille de la liste chainée
merci
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
La taille de la liste tu n'as pas besoin, puisque les éléments seront alloués dynamiquement
En revanche la taille de la table c'est toi qui la fixe ;-)
0
cyrina
 
ok merci .
0