En esta ocasión voy a publicar un programa en C++ con el tema de Tabla de Hash resolviendo las colisiones de datos, el código ha sigo probado en VisualStudio y Codeblocks o cualquier compilador G++, si tienes alguna duda no dudes en postearlo, un saludo.
#include <iostream>
#include <string>
using namespace std;
struct DatosPersonales
{
int Edad;
char * Nombre;
};
//Devuelve el valor numérico de hash en base al tamaño de la tabla de hash
int ValorTabla(char *textoHash, int tamanioTabla)
{
int valorHash=1;
for (int j = 1; j < sizeof(textoHash); j++)
{
valorHash += (int) textoHash[j];
}
return(valorHash % tamanioTabla);
}
int main()
{
int tamanioTablaHs=1000; //tamaño de la tabla de Hash
//TABLA DE HASH
DatosPersonales * tablaHashEj = new DatosPersonales[tamanioTablaHs];
DatosPersonales DatosPersonalesOperacion;
int HashValorPos=1;
char Nombre[20];
int Edad;
cout << «=======DATOS PERSONALES=========»;
for(int i=1; i<=5; i++)
{
cout << «\nNombre: «;
cin >> Nombre;
DatosPersonalesOperacion.Nombre = Nombre;
cout << «Edad: «;
cin >> Edad;
DatosPersonalesOperacion.Edad = Edad;
HashValorPos += ValorTabla(DatosPersonalesOperacion.Nombre, tamanioTablaHs);
tablaHashEj[HashValorPos+i] = DatosPersonalesOperacion;
cout << «Guardado en la posicion En: «<< HashValorPos << «\n»;
}
cin.get();cin.get();
return 0;
}
el ejemplo esta malo aunque sea da un ejemplo que si funcione para ver como funciona este metodo, mejor no lo hagas ya que confundiras a los demas. mediocre