typedef struct hashlist
{
int flag;
struct ext *node;
struct ext *cur;
} HASHLIST;
struct ext
{
union key_t
{
char *str;
unsigned int num;
char ch;
} key;
void *p;
struct ext *next;
struct ext *vnext;
};
typedef struct queue
{
struct ext *head;
struct ext *end;
int length;
} QUEUE;
struct hashlist *hashini();
int str_hashing(const char *title);
int str_hashquery(struct hashlist *hsh,const char *title,void **p);
int str_hashadd(struct hashlist *hsh,const char *title,void *p);
int int_hashing(unsigned int num);
int int_hashquery(struct hashlist *hsh,unsigned int num,void **p);
int int_hashadd(struct hashlist *hsh,unsigned int num,void *p);
int str_hashdestroy(struct hashlist *hsh);
int str_hashdestroy_withfree(struct hashlist *hsh,void freefunc(void *));
struct queue *queueini();
int queueisnull(struct queue *q);
int queuepush(struct queue *q,void *title);
int queuepop(struct queue *q,void **title);