思路:主要是数据结构看着很呆 分析问题从最大的结构入手 最大的是HashTable 然后找到 HASH_RESULT 是枚举的结构 不同多说 是一个分类 然后是 指向元素为HashEntry*指针数组bucket Entry里面还有结构key和value以及hash entry*next(暗示了要用的是链地址法处理冲突)结构大概就是这些
然后考虑具体的初始化
首先开一个HashTable *H 然后给这个结构内存空间 没给上就NULL 然后细化(给内存)每一个结构的指针。(指针给内存 结构,联合,枚举不用分配内存)然后利用memset(属于string.h头文件里面)吧数据全部重置清空,再吧H搞定即可。
HashTable* create_hash(int size)
{
HashTable* H;
H = (HashTable*)malloc(1 * sizeof(HashTable));
if (H == NULL)
return NULL;
H->bucket = (HashEntry**)malloc(size * sizeof(HashEntry*));
if (H->bucket == NULL) {
free(H);
return NULL;
}
memset(H->bucket, 0, size * sizeof(HashEntry*));
H->size = size;
H->last_error = HASH_OK;
return H;
}