Cómo escribir un algoritmo de diccionario en un programa en C

Me asignaron una tarea similar a principios de los 80 para crear una forma más rápida de encontrar variables en una tabla de símbolos durante la depuración de un sistema operativo en tiempo real para un analizador de gases en sangre.

Primero hice el método de tabla hash y funcionó bien.

Luego pensé en las pestañas de un diccionario y utilicé una idea de indexación que dividió la lista en 26 piezas basadas en el primer carácter.

Esto equivalía al tiempo utilizado por el método de tabla hash.

Cuando lo modifiqué nuevamente para usar 676 piezas, la mejora de velocidad resultante fue enorme.

Esto eventualmente se convirtió en lo que yo llamo un bosque alfabético con 676 árboles con cada árbol basado en las primeras 2 letras del símbolo.

Los enlaces a los árboles se almacenan en una matriz con los primeros caracteres reducidos a los índices utilizando valores ASCII y restando el valor de A para obtener un índice de matriz basado en cero.

Este es también el método que utilicé para ordenar la lista que resultó en una mejora de la velocidad sobre la clasificación rápida por un factor de 6 a 10 para las mismas tablas de símbolos.

Tener en cuenta que los árboles ya contienen los primeros caracteres también puede generar ahorros de memoria al no almacenar los primeros en letras de cada elemento del árbol.


Depende de lo que quieras decir, pero en cualquier caso se trata de estructuras de datos.

Si te refieres a un almacén de valores clave, entonces quieres una tabla hash.

Si te gusta un diccionario de inglés, entonces ves un árbol de altura equilibrada.

Creo que el problema principal que tendrá que resolver no es el diccionario en sí, sino el algoritmo de hash que deberá implementar para una recuperación rápida de elementos.

Creo que esto debería funcionar para usted como primer borrador.
Una implementación rápida de tabla hash en c.