Laboratorio de hashing y memoria en C
Tabla Hash
Acerca de esta estructura
Tabla hash de capacidad fija con claves/valores enteros y encadenamiento separado.
1 Preparar y controlar ejecución
Configura la llamada C y elige si deseas completarla o recorrer sus instrucciones.
Paso: 0/0
Sin traza cargada.
Tabla hash
Memoria C actual Identidades simbólicas; no son direcciones reales.
Prepara una traza para observar la memoria C.
Código C
Codigo C no disponible para esta operacion en docs/tads_C/tad_tabla_hash.c.
4 Comprender Fórmula, cadena, punteros, costo y memoria del paso activo
Prepara una operación para observar índice, cadena, punteros y memoria.
Función hash
Sin frame.
Cadena activa
Sin cadena.
Variables y punteros
Sin punteros.
Costo observado
Sin medición.
Memoria
Los identificadores de memoria son simbólicos, no direcciones reales.
Sin transición.
Invariante
Sin verificación.
5 Resultados de ejecución Consola C, historial y estructura del TAD
Consola C (printf)
Historial C17
Estructura del TAD
typedef struct th_nodo {
int clave; /**< Clave entera del elemento. */
int valor; /**< Dato almacenado. */
struct th_nodo *siguiente; /**< Enlace al siguiente nodo del bucket. */
} THNodo;
typedef struct {
THNodo **buckets; /**< Arreglo de cabezas de cadenas de colisión. */
int capacidad; /**< Capacidad reservada de la estructura. */
int cantidad; /**< Número de elementos almacenados. */
} TablaHash;
typedef struct {
int capacidad; /**< Capacidad reservada de la estructura. */
int cantidad; /**< Número de elementos almacenados. */
int buckets_ocupados; /**< Número de buckets con al menos un nodo. */
int colisiones; /**< Elementos que exceden el primer nodo de cada bucket ocupado. */
float factor_carga; /**< Cociente float de metadata cantidad/capacidad en tabla utilizable; cero en salida vacia de error. */
} THEstadisticas;