definisci una dimensione massima della tua tabella di hash HASHSIZE

e calcoli il tuo valore di ash come
ashvalue % HASHSIZE;

puoi anche farlo direttamente nella tua funzione
codice:
unsigned long hash(unsigned char *str)
{
unsigned long hash = 5381;
int c;

while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

return hash % HASHSIZE;
}
devi poi gestirti le collisioni.

ciao
sergio