Table de hachage

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!
Configuration: Windows Vista
Internet Explorer 7.0

4 réponses

  1. Modérateur
    Salut,

    il faut faire une fonction de hachage
    0
    1. merci Lami, c ca mon pb, je sais pas comment procéder;
      tu peux m'aider stp?
      0
  2. Modérateur
    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
    1. 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
  3. Modérateur
    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
    1. ok merci .
      0