Implémentation de la table de hachage en C ++

Implémentation de la table de hachage en C ++
Si vous avez déjà travaillé dans un environnement python, vous devez avoir connu l'utilisation du «dictionnaire» de l'objet qui contient une paire de valeurs clés à l'intérieur. Tout comme les dictionnaires, C ++ a proposé le concept de paire de valeurs clés. Cette paire sera stockée dans le tableau de hachage de la structure de données de C++. Le tableau de hachage de structure de données utilisera la fonction de hachage pour calculer l'index du tableau pour insérer des valeurs dans le tableau à l'aide d'index et les rechercher également.

Dans ce guide, nous discuterons de l'utilisation des méthodes pour créer, ajouter, supprimer, rechercher les valeurs des tables de hachage en utilisant certaines de ses fonctions.

Commençons par la connexion de Linux. Essayez de créer un fichier C ++ en utilisant l'instruction «Touch» dans le shell et utilisez tout éditeur intégré disponible à partir de votre système Linux pour l'ouvrir (i.e. Gnu nano).

Exemple: table de hachage

Vous verrez que le fichier vide est ouvert sur votre écran de terminal Linux. Dans ce fichier, nous devons inclure certaines des bibliothèques principales et nécessaires de C ++ pour rendre notre code exécutable en utilisant différents concepts.

Nous avons donc ajouté le «iOStream» pour l'utilisation des entrées et des sorties dans le script via les objets CIN et COUT. La bibliothèque de chaînes a été utilisée pour utiliser les valeurs de chaîne dans notre code. La bibliothèque «CSTDLIB» et «CSTdio» a été utilisée pour obtenir les valeurs de caractère et d'entrée standard pour l'utilisation des tables de hachage. Avant d'utiliser une fonction ou une classe, nous avons déclaré un «espace de noms» standard dans le code et après cela, nous avons initialisé une variable entière constante «T_S» pour la taille de la table de hachage pour obtenir 200 enregistrements.

La classe HashTableEntry est là pour initialiser la valeur de la paire de valeurs clés d'une table en obtenant la valeur en tant qu'entrée de l'utilisateur. La fonction de constructeur HashTableEntry () sera utilisée pour cela.

Voici l'autre classe «hashmaptable» déclarant un objet de pointeur privé «TB» pour la classe «HashTableEntry».

La création d'un objet «hachage» dans la fonction principale () pour la classe HashMaptable, la première fonction à exécuter, est la fonction de construction «hashmaptable». Ce constructeur est utilisé pour construire la table de type paire de valeurs de clé de taille «t_s» i.e. 200.

Pour construire une table de valeur clé de taille 200, nous utilisons la boucle «pour» jusqu'à la taille 200 initialisant chaque index à Null.

Cette fonction calculera le module de la clé «A» et la taille de la table «t_s» et le renverra.

Si l'utilisateur choisit l'option «1», la fonction «d'entrée» sera exécutée lors de l'obtention de la paire de valeurs de clé de l'utilisateur. La fonction «hashfunc» sera appelée en passant la valeur «A». Le module retourné sera enregistré dans la variable «H». Ce «H» sera utilisé comme numéro d'index pour le tableau «TB» dans la boucle while.

Si la valeur d'index spécifique d'une table n'est pas nul et que l'index de la table «H» pour la clé «A» n'est pas égal à la clé «A», il sera à nouveau appelé le hashfunc () pour calculer le module et enregistrer le résultat sur « h ”. Si l'index spécifique du tableau n'est pas nul, nous supprimerons cette valeur particulière du tableau et générerons une nouvelle entrée de valeur clé à l'index spécifique.

La fonction SearchKey () prendra la clé, vérifiera le module et recherchera la valeur dans l'index de la table. Si la valeur à l'index «H» est nul, elle renvoie -1 a autrement renvoyé la valeur «B» d'un index spécifique «H» du tableau.

La fonction delete () prendra la clé et la valeur spécifique de cette clé. Supprimer la valeur si l'index spécifié n'est pas vide et afficher le message de réussite à l'aide de l'instruction COUT.

Le destructeur est utilisé pour supprimer toute la table de hachage.

Après avoir commencé la méthode principale (), nous avons créé un «hachage» d'objet pour la classe HashMaptable. En raison de la formation d'objets, le constructeur sera appelé et une table sera créée. Ensuite, nous avons initialisé 2 variables entières A, B et C. Nous utilisons la représentation du menu pour un utilisateur pour créer une table, insérer, supprimer et afficher des enregistrements en choisissant une option.

Ainsi, la boucle while () continuera de s'exécuter jusqu'à ce que l'utilisateur sache. Nous utilisons des instructions de sortie standard COUT pour créer un menu I.e. Choisissez 1 pour saisir une valeur, 2 pour rechercher, 3 à supprimer et 4 pour sortir. Un utilisateur a été invité à choisir une option et une instruction CIN est utilisée pour obtenir des commentaires (1,2,3,4) dans une variable «C» de l'utilisateur.

Maintenant, voici l'instruction Switch en utilisant la variable «C» comme valeur d'option pour agir en conséquence.

Maintenant, si l'utilisateur a appuyé sur 1 en option, le cas 1 d'un commutateur sera exécuté. Il exécutera quelques instructions COUT et vous demandera d'abord de saisir la clé, puis la valeur de la paire pour une clé particulière en utilisant l'instruction CIN et l'enregistrement des variables de valeur de clé sur «A» et «B». La fonction «d'entrée» sera appelée à l'aide d'un objet «hachage» et la variable «A», «B» lui sera transmise.

Si un utilisateur choisit 2, le cas 2 sera exécuté et demandera à un utilisateur de saisir une clé ou de rechercher. Le «CIN» obtiendra une clé de l'utilisateur pour mettre la variable «A». L'instruction «IF» appellera la méthode «SearchKey ()» à l'aide de l'objet «Hash».

Si nous ne trouvons aucune clé du tableau I.e. «-1», nous afficherons un message «Aucune valeur trouvée à la clé A». Sinon, nous afficherons la clé et sa valeur spécifique renvoyée par la fonction «SearchKey».

Dans le choix de l'option 3, l'utilisateur sera invité à saisir la clé pour le supprimer du tableau. La fonction «Delete ()» sera exécutée.

Si l'utilisateur choisit l'option 4, le programme quittera.

Maintenant, il est temps de compiler ce code avec le compilateur spécial «G ++» d'Ubuntu pour les fichiers C ++.

La compilation a été réussie et nous l'avons exécutée avec le «./un.requête out. Le menu des 4 options a été affiché et l'utilisateur a été invité à entrer son choix (1,2,3,4). L'utilisateur a ajouté 1 pour insérer la valeur dans le tableau de hachage. L'utilisateur a entré la clé et sa valeur pour le tableau. Cet enregistrement a été inséré avec succès et le menu s'est affiché à nouveau.

L'utilisateur est entré «2» en option pour rechercher la valeur de clé spécifique. En retour, nous avons obtenu la valeur «14» pour la clé 1 dans le tableau de hachage. Le menu Options sera à nouveau affiché.

Cette fois, l'utilisateur choisit l'option 3 pour supprimer la valeur déjà maintenue de la table de hachage en utilisant sa clé. Ainsi, l'utilisateur a été invité à saisir la clé pour laquelle vous souhaitez supprimer la valeur (i.e. 1). Le système affichera le message que l'élément spécifique a été supprimé.

Encore une fois, le menu a été affiché. L'utilisateur a choisi l'option 4 pour quitter le programme.

Conclusion

Cet article concerne la création d'une table de hachage en utilisant le code C ++ dans l'Ubuntu 20.04 Système. Parallèlement à cela, nous avons également découvert les méthodes pour insérer la paire de valeurs de clé dans la table de hachage, afficher la paire de valeurs de clé spécifique, supprimer une paire de valeurs de clé spécifique et quitter le code. Nous avons utilisé le menu pour simplifier les instructions et les instructions de commutation pour choisir les options.