Changes between Version 54 and Version 55 of CaoCourseTme2
- Timestamp:
- Feb 18, 2007, 3:42:05 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CaoCourseTme2
v54 v55 50 50 ce qui n'est pas très efficace si le nombre d'éléments est grand. 51 51 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. 52 Pour accélérer la recherche, on créé un tableau de listes chainées. 56 53 On définit ensuite une fonction, que l'on nomme '''fonction de hachage''', 57 54 qui calcule l'index d'une case à partir de la clé. 58 55 Tout é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. 56 définie par l'index calculé par la fonction de hachage. 57 58 Dans la pratique, il n'est pas possible d'éviter les collisions, et deux éléments 59 ayant des clés différentes peuvent avoir le même index de hachage. 60 Pour que la méthode soit efficace, il faut que les éléments se répartissent 61 aussi uniformément que possible dans les différentes cases de la table, et qu'il n'y ait 62 qu'un petit nombre d'éléments dans chaque case du tableau. Le nombre de case du tableau 63 doit donc être du même ordre de grandeur que le nombre total d'éléments à stocker. 64 De plus, le nombre de case du tableau est généralement un nombre premier. 65 63 66 Il existe plusieurs méthodes de calcul de l'index, nous vous 64 67 donnons celle proposé par Donald Knuth. 65 Dans la pratique, il n'est pas possible d'éviter les collisions, et deux éléments66 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 aura69 qu'un tout petit nombre de listes contenant plus d'un élément.70 68 71 69 La propriété principale d'une table de hachage est que, si la taille de la table … … 129 127 130 128 * 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 ? 132 130 * Dans la fonction {{{hte_create}}} comment fait-on pour tester le retour de {{{malloc}}} ? à quoi celà sert-il ? 133 131 … … 136 134 Le fichier attachment:dico.c rassemble les fonctions d'accès à une table de hachage utilisé comme dictionnaire. 137 135 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 ? 139 137 * Pourquoi teste-on key dans la fonction {{{hte_get}}} ? 140 138 * Pourquoi définit on la structure {{{hte_item_s}}} ici ?