7 #define CLOADFACTOR 0.25
8 #define CHASH_SIZE 1024
10 typedef struct chashlistnode {
12 void *val; //this can be cast to another type or used to point to a larger structure
13 struct chashlistnode *next;
16 typedef struct chashtable {
17 chashlistnode_t *table; // points to beginning of hash table
20 unsigned int numelements;
24 /* Prototypes for hash*/
25 chashtable_t *chashCreate(unsigned int size, float loadfactor);
26 static unsigned int chashFunction(chashtable_t *table, unsigned int key);
27 unsigned int chashInsert(chashtable_t *table, unsigned int key, void *val);
28 void *chashSearch(chashtable_t *table, unsigned int key); //returns val, NULL if not found
29 unsigned int chashRemove(chashtable_t *table, unsigned int key); //returns -1 if not found
30 unsigned int chashResize(chashtable_t *table, unsigned int newsize);
31 void chashDelete(chashtable_t *table);