#ifndef HASH_TABLE_H #define HASH_TABLE_H typedef struct hash_entry hashentry; struct hashtable_t { int size; int count; int sizeindex; hashentry **hash_array; unsigned int (*hash_function)(const void *key); int (*compare)(const void *, const void *); }; typedef struct hashtable_t hashtable; struct hash_entry { void *key; void *value; unsigned int hashvalue; hashentry *next; }; unsigned int hash(hashtable *, const void *); unsigned int hash_double(const void *); unsigned int hash_int(const void *); unsigned int hash_string(const void *); int cmp_string(const void *, const void *); int cmp_double(const void *, const void *); int cmp_int(const void *, const void *); unsigned int indexOf(unsigned int , int ); int growTable(hashtable *); int insert(hashtable *,void *,void *); void *find(hashtable *,void *); void *removeKey(hashtable *,void *); void deleteTable(hashtable *); #endif