Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: CoLSoN2 en 12 de Diciembre de 2004, 01:18:29 AM

Título: Implementación De Una Tabla Hash
Publicado por: CoLSoN2 en 12 de Diciembre de 2004, 01:18:29 AM
 ¿Alguien sabe de un enlace con algún algoritmo o código fuente de cómo implementar una tabla hash, estilo std::map, donde la clave siempre sea un string?
Título: Implementación De Una Tabla Hash
Publicado por: tywok_ en 12 de Diciembre de 2004, 02:16:51 AM
 Hola!
Para hacer un hash, puedes hacer un sumatorio de los valores del string con factores primos... a ver, si quieres hacer un hash de dos numeros, por ejemplo puedes hacer 701*a+b. esto lo podrias pasar al string sin muxos problemas. Seguro q en internet hay algoritmos mas avanzados, pero este funciona bastante bien!
Título: Implementación De Una Tabla Hash
Publicado por: ethernet en 12 de Diciembre de 2004, 03:55:35 PM
 
http://www.sgi.com/tech/stl/hash.html  :)
Título: Implementación De Una Tabla Hash
Publicado por: Pogacha en 13 de Diciembre de 2004, 11:27:32 AM
 Haber si de memoria me sale:

template < int n_Nodos=32000 > class CHash
{
 CMyStringList Nodo[n_Nodos]; // la de microsoft esta bien sino cualquiera
                                                 // yo en particular tengo una que tambien permite busqueda binaria

 int Codigo(const char *s)
{
  static int Desplazamientos[8] = { 0, 5, 10, 1, 6, 11, 2, 7 };
  char *c;  
  int v=0,j=0;
  c=s;
  while(*c) {  v^= int(*c-'a')  << Desplazamiento[j++];  c++}
  return v%n_Nodos;  
}
 public:
 void Vaciar(void)
 {
    for(int i=0; i<n_Nodos; i++) Nodos[i].Vaciar();
 }
 void Agregar(const char *s)
 {
    Nodo[Codigo(s)].Agregar(s);
  }

 void Quitar(const char *s)
 {
    Nodo[Codigo(s)].Delete(s);
  }

  const char *Encontrar(const char *s)
  {
       return Nodo[Codigo(s)].Buscar(s);
  }
};


De esta forma consigo un spread del 25%, en el lenguaje ingles al menos.
Saludos.

PD: CoLSoN2 ..., vos trabajas en RAC?

Edit: Le hice tres correcciones, (al parecer no me salio de primera)
Título: Implementación De Una Tabla Hash
Publicado por: CoLSoN2 en 13 de Diciembre de 2004, 11:02:48 PM
 ¿RAC?
Título: Implementación De Una Tabla Hash
Publicado por: Pogacha en 13 de Diciembre de 2004, 11:33:53 PM
 RAC
Pedian desesperadamente un juego con tabla hash de strings.
Saludos.
Título: Implementación De Una Tabla Hash
Publicado por: CoLSoN2 en 14 de Diciembre de 2004, 06:43:50 AM
 pues nop, no sabía ni que existía xD