Logo

¡Bienvenido a Stratos!

Acceder

Foros



Implementación De Una Tabla Hash

Iniciado por CoLSoN2, 12 de Diciembre de 2004, 01:18:29 AM

« anterior - próximo »

CoLSoN2

 ¿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?
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

tywok_

 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!


Pogacha

 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)

CoLSoN2

Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Pogacha

 RAC
Pedian desesperadamente un juego con tabla hash de strings.
Saludos.

CoLSoN2

 pues nop, no sabía ni que existía xD
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.
Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.