From 82a5f8dce83c710d4436a4b821c794314cf5d978 Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Fri, 14 Jan 2022 15:02:34 +0100 Subject: [PATCH] added pseudo stuff --- slides/cours_14.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/slides/cours_14.md b/slides/cours_14.md index 22c5f2c..ceffe2c 100644 --- a/slides/cours_14.md +++ b/slides/cours_14.md @@ -15,4 +15,92 @@ patat: backend: auto ... +# Exercice 3 + +* Stocker les numéros de téléphones internes d'une entreprise suivants dans un +tableau de 10 positions. +* Les numéros sont compris entre 100 et 299. +* Soit $N$ le numéro de téléphone, la fonction de hachage est +$$ +h(N)=N\mod 10. +$$ +* La fonction de gestion des collisions est +$$ +C_1(N,i)=(h(N)+3\cdot i)\mod 10. +$$ +* Placer 145, 167, 110, 175, 210, 215 (mettre son état à occupé). +* Supprimer 175 (rechercher 175, et mettre son état à supprimé). +* Rechercher 35. +* Les cases ni supprimées, ni occupées sont vides. +* Expliquer se qui se passe si on utilise? +$$ +C_1(N,i)=(h(N)+5\cdot i)\mod 10. +$$ + +# Préambule + +* On considère pas le cas du chaînage en cas de collisions. +* L'insertion est construite avec une forme du type + + ```C + index = h(key); + while (table[index].state == OCCUPIED && table[index].key != key) { + index = (index + k) % table_size; // attention à pas dépasser + } + table[index].key = key; + table[index].state = OCCUPIED; + ``` +* Gestion de l'état d'une case *explicite* + + ```C + typedef enum {EMPTY, OCCUPIED, DELETED} state; + ``` + +# L'insertion + +## Pseudocode? + +. . . + +```C +insert(table, key, value) { + index = hash de la clé; + index = si "index" est déjà occupé dans le tableau gérer la collision; + + changer l'état de la case à "index" à OCCUPIED; + changer la valeur de la case "index" à value; +} +``` + +# La suppression + +## Pseudocode? + +. . . + +```C +insert(table, key, value) { + index = hash de la clé; + index = si "index" est déjà occupé dans le tableau gérer la collision; + + changer l'état de la case à "index" à OCCUPIED; + changer la valeur de la case "index" à value; +} +``` + +# La recherche + +## Pseudocode? + +. . . + +```C +insert(table, key, value) { + index = hash de la clé; + index = si "index" est déjà occupé dans le tableau gérer la collision; + + changer l'état de la case à "index" à OCCUPIED; + changer la valeur de la case "index" à value; +} +``` -- GitLab