Implementación de la tabla hash en c ++

Implementación de la tabla hash en c ++
Si alguna vez ha trabajado en un entorno de Python, debe haber sabido sobre el uso del "diccionario" del objeto que contiene un par de valores clave dentro de él. Al igual que los diccionarios, a C ++ se le ocurrió el concepto de par de valores clave. Este par se almacenará en la estructura de datos hash tabla de c++. La tabla hash de estructura de datos utilizará la función hash para calcular el índice de matriz para insertar valores en la tabla utilizando los índices y buscarlos también.

Dentro de esta guía, discutiremos el uso de métodos para crear, agregar, eliminar, los valores de búsqueda de las tablas hash utilizando algunas de sus funciones.

Comencemos con el inicio de sesión de Linux. Intente hacer un archivo C ++ utilizando la instrucción "toque" en el shell y utilice cualquier editor incorporado disponible desde su sistema Linux para abrirlo (i.mi. GNU Nano).

Ejemplo: tabla hash

Verá que el archivo vacío se abre en su pantalla de terminal de Linux. Dentro de este archivo, debemos incluir algunas de las bibliotecas principales y necesarias de C ++ para que nuestro código sea ejecutable al usar diferentes conceptos.

Entonces, hemos agregado el "iOStream" para el uso de entrada y salida en el script a través de los objetos CIN y Cout. La biblioteca de cadenas se ha utilizado para utilizar los valores de las cadenas en nuestro código. La biblioteca "CSTDLIB" y "CSTDIO" se ha utilizado para obtener el carácter estándar y los valores de entrada para el uso de tablas hash. Antes de usar cualquier función o clase, hemos declarado un "espacio de nombres" estándar en el código y después de eso, hemos inicializado una variable entera constante "T_S" para el tamaño de la tabla hash para obtener 200 registros.

La clase HashtableEntry está aquí para inicializar el valor del par de valor clave de una tabla obteniendo el valor como entrada del usuario. La función constructora hashtableEntry () se utilizará para esto.

Aquí viene la otra clase "Hashmaptable" que declara un objeto de puntero privado "TB" para la clase "HashtableEntry".

La creación de un objeto "hash" en la función main () para la clase hashmaptable, la primera función que se ejecuta es la función de construcción "hashmaptable". Este constructor se utiliza para construir la tabla de tipo de par de valor clave de tamaño "T_S" I.mi. 200.

Para construir una tabla de valor de valor clave del tamaño 200, hemos estado utilizando el bucle "para" hasta el tamaño 200 inicializando cada índice a nulo.

Esta función calculará el módulo de la clave "A" y el tamaño de la tabla "T_S" y lo devolverá.

Si el usuario elige la opción '1', la función de "entrada" se ejecutará al obtener el par de valor clave del usuario. La función "hashfunc" se llamará pasando el valor "a". El módulo devuelto se guardará en la variable "H". Esta "H" se usará como un número de índice para la Tabla "TB" dentro del bucle While.

Si el valor de índice específico de una tabla no es nulo y el índice de tabla "H" para la clave "A" no es igual a la clave "A", se volverá a llamar HashFunc () para calcular el módulo y guardar el resultado en " H ". Si el índice específico de la tabla no es nulo, eliminaremos ese valor particular de la tabla y generaremos una nueva entrada de valor clave en el índice específico.

La función SearchKey () tomará la clave, verificará el módulo y buscará el valor en el índice de la tabla. Si el valor en el índice "h" es nulo, devolverá -1 devolver el valor "b" de un índice específico "h" desde la tabla.

La función delete () tomará la clave y el valor específico para esta clave. Elimine el valor si el índice especificado no está vacío y muestra el mensaje de éxito utilizando la instrucción CoUT.

El destructor se usa para eliminar toda la mesa del hash.

Después de comenzar el método main (), hemos creado un objeto "hash" para la clase hashmaptable. Debido a la formación de objetos, se llamará al constructor y se creará una tabla. Luego, hemos inicializado 2 variables enteros A, B y C. Hemos estado utilizando la representación del menú para que un usuario cree una tabla, inserte, elimine y muestre registros eligiendo alguna opción.

Entonces, el bucle while () continuará ejecutándose hasta que el usuario salga. Hemos estado utilizando declaraciones de salida estándar de Cout para crear un menú I.mi. Elija 1 para ingresar un valor, 2 para buscar, 3 para eliminar y 4 para salir. Se le ha pedido a un usuario que elija una opción y se utilice una instrucción CIN para obtener la entrada (1,2,3,4) en una variable 'C' del usuario.

Ahora, aquí viene la instrucción Switch utilizando la variable "C" como un valor de opción para actuar en consecuencia.

Ahora, si el usuario ha presionado 1 como opción, el caso 1 de un interruptor se ejecutará. Ejecutará algunas declaraciones de Cout y le solicitará que ingrese la clave primero y luego el valor del par para una clave en particular usando la instrucción CIN y la entrada de valor de clave de guardar a las variables "A" y "B". La función de "entrada" se llamará utilizando un objeto "hash" y la variable "A", "B" se pasará a él.

Si un usuario elige 2, el caso 2 se ejecutará y le pedirá a un usuario que ingrese una clave o búsqueda. El "CIN" obtendrá una clave del usuario para poner en la variable "A". La instrucción "IF" llamará al método "SearchKey ()" utilizando el objeto "Hash".

Si no encontramos ninguna clave de la tabla I.mi. "-1", mostraremos un mensaje "No hay valor encontrado en la clave A". De lo contrario, mostraremos la tecla y su valor específico devuelto por la función "Key Key".

Al elegir la opción 3, se le pedirá al usuario que ingrese la clave para eliminarla de la tabla. La función "delete ()" se ejecutará.

Si el usuario elige la opción 4, el programa saldrá.

Ahora, es hora de compilar este código con el compilador especial "G ++" de Ubuntu para archivos C ++.

La compilación fue exitosa y la ejecutamos con el "./a.Out "consulta. Se ha mostrado el menú de la opción 4 y se le ha pedido al usuario que ingrese su elección (1,2,3,4). El usuario ha agregado 1 para insertar valor en la tabla hash. El usuario ingresó la clave y su valor para la tabla. Este registro se insertó correctamente y el menú se volvió a mostrar.

El usuario ingresó "2" como una opción para buscar el valor de clave específico. A cambio, obtuvimos el valor "14" para la clave 1 en la tabla hash. El menú de opciones se mostrará nuevamente.

Esta vez, el usuario elige la opción 3 para eliminar el valor ya retenido de la tabla hash utilizando su clave. Entonces, se le pidió al usuario que ingresara la clave para la que desea eliminar el valor (yo.mi. 1). El sistema mostrará el mensaje de que se ha eliminado el elemento específico.

Nuevamente, se ha mostrado el menú. El usuario ha elegido la opción 4 para salir del programa.

Conclusión

Este artículo trata sobre la creación de una tabla hash utilizando el código C ++ en el Ubuntu 20.04 sistema. Junto con eso, también descubrimos los métodos para insertar el par de valores clave en la tabla hash, mostrar el par de valores clave específico, eliminar un par de valores clave específico y salir del código. Utilizamos el menú para simplificar y las declaraciones de conmutación para elegir opciones.