#ifndef __HASH_TABLE__
#define __HASH_TABLE__ 1

typedef struct Elist elist; 	/* i.e., 'Elist' is equivalent to 'struct elist'  */
typedef struct Llist llist;


struct Elist {
    elist *prev;
    elist *next;
    char *key;
    int count;
};

struct Llist {
    elist *head;
};



int hash(char *key);
llist *new_hash_table(int n);
elist *list_search(llist *L, char *key);
void *list_insert(llist *L, elist *x);
elist *chained_hash_search(llist *T, char *key);
void chained_hash_insert(llist *T, elist *x);
elist *make_elist(char *key);
void print_hash_table(llist *T, int n);

#endif

