struct bucket {
    char **data;
    int allocated;
    int firstFree; /* as in data[firstFree] */
};

struct hash_table {
    int size;
    struct bucket *bucket;
};

struct hash_table *new_table(int size);
char *in_table(struct hash_table *t, char *s);
void add_to_table(struct hash_table *t, char *s);
void hash_stats(struct hash_table *t);
