Changes between Version 54 and Version 55 of CaoCourseTme2


Ignore:
Timestamp:
Feb 18, 2007, 3:42:05 PM (18 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CaoCourseTme2

    v54 v55  
    5050ce qui n'est pas très efficace si le nombre d'éléments est grand.
    5151
    52 Pour accélérer la recherche, on créé un tableau de listes chainées. Le nombre de
    53 cases de ce tableau doit être de l'ordre de grandeur du nombre maximal d'éléments
    54 que l'on souhaite gérer. Si on veut gérer 1000 éléments, il faut un tableau
    55 d'environ 1000 cases.     
     52Pour accélérer la recherche, on créé un tableau de listes chainées.
    5653On définit ensuite une fonction, que l'on nomme '''fonction de hachage''',
    5754qui calcule l'index d'une case à partir de la clé.
    5855Tout élément doit être rangé dans la liste chainée associée à la case du tableau
    59 définie par l'index calculé par la fonction de hachage.
    60 
    61 Pour que cette méthode soit efficace, il faut que les éléments se répartissent
    62 aussi uniformément que possible dans les différentes cases de la table.
     56définie par l'index calculé par la fonction de hachage. 
     57
     58Dans la pratique, il n'est pas possible d'éviter les collisions, et deux éléments
     59ayant des clés différentes peuvent avoir le même index de hachage.
     60Pour que la méthode soit efficace, il faut que les éléments se répartissent
     61aussi uniformément que possible dans les différentes cases de la table, et qu'il n'y ait
     62qu'un petit nombre d'éléments dans chaque case du tableau. Le nombre de case du tableau
     63doit donc être du même ordre de grandeur que le nombre total d'éléments à stocker.
     64De plus, le nombre de case du tableau est généralement un nombre premier.
     65
    6366Il existe plusieurs méthodes de calcul de l'index, nous vous
    6467donnons celle proposé par Donald Knuth.
    65 Dans la pratique, il n'est pas possible d'éviter les collisions, et deux éléments
    66 ayant des clés différentes peuvent avoir le même index de hachage.
    67 
    68 En résumé, pour ranger 1000 éléments, on fabrique un tableau de 1000 listes chainées avec l'espoir que la plupart des listes ne contiendront qu'un seul élément et qu'il n'y aura
    69 qu'un tout petit nombre de listes contenant plus d'un élément.
    7068
    7169La propriété principale d'une table de hachage est que, si la taille de la table
     
    129127
    130128 *  Faîte un dessin représentatif de la valeur de la variable locale {{{root}}} de la fonction {{{hte_create}}} si {{{nb_list==10}}} juste avant l'appel return.
    131  *  La fonction {{{hte_hash}}} peut-elle provoquer une erreur de segment ? Comment y remedier proprement ?
     129 *  La fonction {{{hte_hash}}} peut-elle provoquer une erreur de segmentation ? Comment y remedier proprement ?
    132130 *  Dans la fonction {{{hte_create}}} comment fait-on pour tester le retour de {{{malloc}}} ? à quoi celà sert-il ?
    133131
     
    136134Le fichier attachment:dico.c rassemble les fonctions d'accès à une table de hachage utilisé comme dictionnaire.
    137135
    138  *  Le type {{{hte_data_t}}} n'est pas défini ici. Est-ce grave ? Où devra-t-il être défini ?
     136 *  Le type {{{hte_data_t}}} n'est pas défini dans le fichier ''dico.c''. Pourquoi ? Où devra-t-il être défini ?
    139137 *  Pourquoi teste-on key dans la fonction {{{hte_get}}} ?
    140138 *  Pourquoi définit on la structure {{{hte_item_s}}} ici ?