Vous devez implémenter le corps des fonctions suivantes:
[5 points]
HashTable.java: boolean insert(String key)
Le but de cette fonction est d'insérer "key" dans le tableau si "key" n'est pas déjà dans le tableau.
Dans le cas de collision avec une autre valeur, le tout doit être géré de façon appropriée. Si il est
impossible de trouver un endroit, lancer l'exception HashFullException. Si l'ajout à été fait avec succès,
retourner "true". Vous êtes responsable de mettre à jour la variable "sumCollision" dans cette fonction.
Cette variable compte le nombre de collision, et doit seulement être incrémentée une fois par appel à
insert().
[5 points]
HashTable.java: boolean delete(String key)
Le but de cette fonction est de retirer un élément du tableau s'il est présent.
Le tableau doit rester intègre après le retrait. Retourner "true" si l'élément a été retiré.
[5 points]
HashTable.java: boolean search(String key)
Cette fonction retourne "true" si et seulement si "key" est dans le tableau.
[5 points]
LinearProbingFunction.java:
Position hash(String key, int j, int nRows, int nCols)
Cette fonction doit hacher "key" pour trouver les indices du tableau. Les indices sont retourné sous la
forme d'un objet de type Position, et sont situé entre [0,nRows) et [0,nCols].
La stratégie de sondage linéaire doit être utilisé pour ajouter une valeur de décalage à la position
lorsque le paramètre "j" est plus grand que 0.
[5 points]
DoubleHashingFunction.java:
Position hash(String key, int j, int nRows, int nCols)
Semblable à la fonction du même nom dans le fichier LinearProbingFunction.java, cette fonction doit
hacher "key" pour trouver les indices du tableau. Par contre, la stratégie de hachage double doit être
utilisé pour trouver la valeur de décalage, qui est ensuite multiplié par "j".
[5 points]
LinearProbingFunction.java:
int h(String s)
DoubleHashingFunction.java:
int h1(String s)
int h2(String s)
Le but de ces fonctions est de générer un nombre identificateur pour "s". Nous vous permettons
d'utiliser la fonction java.lang.Object.hashCode(), mais attention, cette fonction peut retourner une
valeur négative, et utiliser l'opérateur modulo sur une valeur négative n'est pas intuitif. Vous ne serez
pas jugé sur la qualité de votre fonction de hachage, en autant qu'elle fonctionne (mais vous devez
quand même faire plus que retourner une constante). Faites attention à h2(), cette fonction ne doit
jamais retourner 0 puisqu'elle est utilisée dans la formule d'une valeur de décalage.