UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2015 - Enero 2016

Estructuras de datos dinámicas

Actividades previas

1. Lectura sobre tablas Hash

Recursos

Plan de trabajo

  • Responde a las siguientes preguntas:

    1. Supón que se ha definido una estructura de datos con nombre struct hashtable que representa una tabla hash como la del ejemplo. ¿Qué prototipos crees que tendrían las funciones para buscar un valor e insertar un par (clave, valor)?

    2. Si la tabla de una tabla hash tiene tamaño 100, ¿qué función hash simple se te ocurre con el número de pasaporte? ¿Y en general para cualquier tamaño de tabla?

¿Cuánto tiempo has dedicado a esta actividad? mins.

2. Implementación de una tabla hash

Recursos

  • Tablas Hash

  • Implementación de las funciones necesarias para manipular una lista encadenada de elementos (crear, insertar, borrar, buscar, etc.)

Plan de trabajo

  1. Leer el documento Tablas Hash .

  2. Propón una estructura de datos que contenga una tabla hash. Piensa en que esa estructura es la que se manejará en toda la aplicación, esto es, se creará con una función que escribes tú, y se recibirá como parámetro en las funciones de buscar, añadir, borrar, etc.

  3. Escribe la función para crear una tabla hash. Decide qué parámetros necesita recibir.

  4. Escribe la función que dada una tabla hash y una clave, busca si tal clave existe. Devuelve el valor asociado a esa clave o NULL en caso contrario.

  5. Escribe la función que dada una tabla hash, una clave y un valor, añade el par (clave, valor) a la tabla. Se asume que la clave no está presente en la tabla antes de realizarse la operación.

  6. Escribe una función que recibe una tabla hash y la destruye. Esto incluye destruir todas las lista de colisiones internas.

  7. Modifica la estructura de la tabla para que tenga un parámetro denominado densidad. Cuando la densidad de la tabla supere ese valor, se debe redimensionar incrementando su tamaño un 25%. Esto debe suceder de forma transparente cuando se ejecuta una operación de inserción de un nuevo par (clave, valor).

¿Cuánto tiempo has dedicado a esta actividad? mins.