The domain of interest is string matching. Assume I have a structure like this.
typedef struct
{
char *name,
int (*function)();
} StringArray
StringArray s[] =
{
{"George", func1},
{"Paul", func2},
{"Ringo", func3},
{"John", func4},
{"", NULL} /* End of list */
}
There are a fixed number of strings in the array. They are hard coded as in the example.
If the table changes, there would be a need to re-evaluate the quality of the hash function.
I want to apply a hash function to a string, and if the string matches one in the array,
then call the function. A perfect hash function is needed for this. No collisions are allowed.The purpose of requiring hashing is to get O(1) performance on the lookup.
What ideas do you have on designing a function to do this?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…