Skip to content
Snippets Groups Projects
Verified Commit 44f56a10 authored by orestis.malaspin's avatar orestis.malaspin
Browse files
parents a2c8decf 0a44c1f1
Branches
No related tags found
No related merge requests found
Pipeline #15240 passed
...@@ -39,17 +39,22 @@ $$ ...@@ -39,17 +39,22 @@ $$
# Préambule # Préambule
\small
* On considère pas le cas du chaînage en cas de collisions. * On considère pas le cas du chaînage en cas de collisions.
* L'insertion est construite avec une forme du type * L'insertion est construite avec une forme du type
```C ```C
index = h(key); index = h(key);
while (table[index].state == OCCUPIED && table[index].key != key) { while (table[index].state == OCCUPIED
&& table[index].key != key) {
index = (index + k) % table_size; // attention à pas dépasser index = (index + k) % table_size; // attention à pas dépasser
} }
table[index].key = key; table[index].key = key;
table[index].state = OCCUPIED; table[index].state = OCCUPIED;
``` ```
\normalsize
* Gestion de l'état d'une case *explicite* * Gestion de l'état d'une case *explicite*
```C ```C
...@@ -65,11 +70,13 @@ $$ ...@@ -65,11 +70,13 @@ $$
```C ```C
insert(table, key, value) { insert(table, key, value) {
index = hash de la clé; index = hash de la clé;
index = si "index" est déjà occupé et la clé correspondante est pas "key" index =
gérer la collision; si "index" est déjà "occupé"
et la clé correspondante n'est pas "key"
alors gérer la collision;
changer l'état de la case à "index" à occupé; changer l'état de la case "index" à "occupé";
changer la valeur de la case "index" à value; changer la valeur de la case "index" à "value";
} }
``` ```
...@@ -82,9 +89,9 @@ insert(table, key, value) { ...@@ -82,9 +89,9 @@ insert(table, key, value) {
```C ```C
value_t remove(table, key) { value_t remove(table, key) {
index = hash de la clé; index = hash de la clé;
tant que l'état de la case est pas "vide" tant que l'état de la case n'est pas "vide"
si "index" est occupé et la clé est "key" si "index" est "occupé" et la clé est "key"
changer l'état de la case à supprimé changer l'état de la case à "supprimé"
sinon sinon
index = rehash index = rehash
} }
...@@ -99,8 +106,8 @@ value_t remove(table, key) { ...@@ -99,8 +106,8 @@ value_t remove(table, key) {
```C ```C
bool search(table, key, value) { bool search(table, key, value) {
index = hash de la clé; index = hash de la clé;
tant que l'état de la case est pas "vide" tant que l'état de la case n'est pas "vide"
si "index" est occupé et la clé est "key" si "index" est "occupé" et la clé est "key"
retourner vrai retourner vrai
sinon sinon
index = rehash index = rehash
...@@ -118,6 +125,8 @@ bool search(table, key, value) { ...@@ -118,6 +125,8 @@ bool search(table, key, value) {
## Structures de données ## Structures de données
\footnotesize
. . . . . .
```C ```C
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment