Está en la página 1de 9

COMP4097: Estructura de Datos y Algoritmos

Tarea #14: Tablas de Hash utilizando encadenado por separado (chaining)

NOMBRE: Angel Crespo Delgado

1. Utilizando la nueva versión de la clase HashMap que utiliza encadenado por separado
(chaining) escriba un programa principal para especificar la siguiente combinación llave/valor.

Llave: 54 26 93 17 77 31 44
Valor: 0 1 2 3 4 5 6

y añada una función a la clase HashMap llamado show() que permite ver todo el contenido de la
tabla de Hash. Deberá imprimir el contenido utilizando el siguiente formato VERTICAL y, donde
aplique, el encadenado correspondiente.

77 44
#
#
#
26
93
17
#
#
31
54

void show()
{
LinkedHashEntry *prevEntry = NULL;
LinkedHashEntry *entry = table[0];
for(int j =0; j<TABLE_SIZE; j++)
{ entry = table[j];

if(table[j] != NULL)
{
cout << table[j]->getKey() << " ";

while(entry->getNext() != NULL)
{
prevEntry = entry;
entry = entry->getNext();
cout << entry->getKey() << " ";
}
}
else
{
cout << "#";
}

cout << endl;

cout <<
"********************************************************************" <<endl;
}

2. Verifique su función de show() añadiendo las siguientes combinaciones: (35,7) (36,8) (40,9)
(41,10) (42,11)

77 44
#
35
36
26
93
17
40
41
31 42
54
********************************************************************
2 Total colisiones Mapa 1

Process returned 0 (0x0) execution time : 0.002 s


Press ENTER to continue.

3. Añada una función llamada totalColisiones() que calcule el total de colisiones para la tabla de
Hash.

int totalColisiones()
{
return colisiones;
}

class HashMap
{

private:

LinkedHashEntry **table;
*int colisiones =0;
4. Escriba un programa en C++ para construir una tabla de Hash de tamaño 101. Genere un listado
de números aleatorios enteros de tal manera que la tabla de Hash tenga un factor de carga α = 0.25,
α = 0.50, y α = 0.75. Para cada una de las tablas cale el total de colisiones.
Tabla 101 a 0.25% de Carga.
3232
#
#
#
#
#
#
#
#
#
1020
#
#
9810
#
7994
#
#
#
#
#
#
#
#
#
3156
#
7602 1138
#
#
#
8515
#
#
#
#
#
#
1755
#
4282
#
2062
952
#
2671
#
653
#
#
6918
5202
#
#
#
#
#
#
#
#
3595
#
#
#
#
#
#
#
#
#
#
#
2395
#
#
#
#
7955
#
#
#
#
9071
#
8265
#
#
7763
#
#
#
#
#
#
#
7670
#
#
7370
9997
#
********************************************************************
Tabla 101 a 50% de carga.
#
#
#
#
#
#
5056 8187
#
8492
1120
2838
3950
2335
#
5872
#
#
#
7795 7997
2039
5070
#
#
#
#
833
9116
6794
432
#
#
2960
8819
#
9124
#
#
8218 643
4583 8724
#
4787 6908
4687
#
2669 952 4184
9639 145
#
#
1461
2775
1261
#
#
#
2780
6215
9852
#
#
#
#
9554
#
#
#
#
#
#
#
#
#
3201 2292 9463
#
#
#
175
7044
#
2198
#
180
#
9171
7354 789
#
#
#
#
#
#
#
#
#
#
#
1104
7165
#
#
#
#
#
********************************************************************
Tabla 101 a 75% de carga.
#
4041
6769 2426
#
4145
#
#
411 2330
#
#
#
4960
#
#
5973
#
#
#
#
#
9413 8807
728 6081 1637
325 2345
#
6993 2650
#
#
3562 1643
#
#
#
1748
#
#
#
3368
4379
#
#
#
1050
3374
#
#
#
#
7823
3885 9440
#
3988 7624
#
1162
4395
#
#
#
#
6319 8541
2987 1876 8845
1069
8847
#
#
2689 8749 5315 4002
3498
#
6227 7641 5116
5521
169
776
#
7141 3909
3506 8455
8254
#
9367 8054
#
#
8158
8260
7857
1293
#
#
#
6145 5337
8166
#
#
5341 6957
5039 9382
#
#
6355
6457 6255
9993 2822
#
#
#
806 5250
8988
********************************************************************
1 Total colisiones Mapa 2
11 Total colisiones Mapa 3
27 Total colisiones Mapa 4
Process returned 0 (0x0) execution time : 0.003 s
Press ENTER to continue.

También podría gustarte