Unsigned int sdbmhash (char * Str)
{
Unsigned int hash = 0;
While (* Str)
{
// Equivalent to: Hash = 65599 * hash + (* STR ++ );
Hash = (* STR ++) + (hash <6) + (hash <16)-Hash;
}
Return (hash & 0x7fffffff );
}
// Rs Hash Function
Unsigned int rshash (char * Str)
{
Unsigned int B = 378551;
Unsigned int A = 63689;
Unsigned int hash = 0;
While (* Str)
{
Hash = hash * A + (* STR ++ );
A * = B;
}
Return (hash & 0x7fffffff );
}
// JS Hash Function
Unsigned int jshash (char * Str)
{
Unsigned int hash = 1315423911;
While (* Str)
{
Hash ^ = (hash <5) + (* STR ++) + (hash> 2 ));
}
Return (hash & 0x7fffffff );
}
// P. J. Weinberger Hash Function
Unsigned int pjwhash (char * Str)
{
Unsigned int bitsinunignedint = (unsigned INT) (sizeof (unsigned INT) * 8 );
Unsigned int threequarters
= (Unsigned INT) (bitsinunignedint * 3)/4 );
Unsigned int oneeighth
= (Unsigned INT) (bitsinunignedint/8 );
Unsigned int highbits
= (Unsigned INT) (0 xffffffff) <(bitsinunignedint-oneeighth );
Unsigned int hash
= 0;
Unsigned int Test
= 0;
While (* Str)
{
Hash = (hash <oneeighth) + (* STR ++ );
If (test = hash & highbits )! = 0)
{
Hash = (hash ^ (test> threequarters ))&(~ Highbits ));
}
}
Return (hash & 0x7fffffff );
}
// Elf Hash Function
Unsigned int elfhash (char * Str)
{
Unsigned int hash = 0;
Unsigned int x
= 0;
While (* Str)
{
Hash = (hash <4) + (* STR ++ );
If (x = hash & 0xf0000000l )! = 0)
{
Hash ^ = (x> 24 );
Hash & = ~ X;
}
}
Return (hash & 0x7fffffff );
}
// Bkdr Hash Function
Unsigned int bkdrhash (char * Str)
{
Unsigned int seed = 131; // 31 131 1313 13131 131313 Etc ..
Unsigned int hash = 0;
While (* Str)
{
Hash = hash * seed + (* STR ++ );
}
Return (hash & 0x7fffffff );
}
// Djb Hash Function
Unsigned int djbhash (char * Str)
{
Unsigned int hash = 5381;
While (* Str)
{
Hash ++ (hash <5) + (* STR ++ );
}
Return (hash & 0x7fffffff );
}
// AP Hash Function
Unsigned int aphash (char * Str)
{
Unsigned int hash = 0;
Int I;
For (I = 0; * STR; I ++)
{
If (I & 1) = 0)
{
Hash ^ = (hash <7) ^ (* STR ++) ^ (hash> 3 ));
}
Else
{
Hash ^ = (~ (Hash <11) ^ (* STR ++) ^ (hash> 5 )));
}
}
Return (hash & 0x7fffffff );
}