

思路:主要是数据结构看着很呆 分析问题从最大的结构入手 最大的是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;
}
这篇博客介绍了哈希表的结构和初始化过程。作者从最大的结构——HashTable开始,详细阐述了其内部包含的HashEntry指针数组以及每个HashEntry结构中的key、value和next指针,表明使用的是链地址法处理冲突。初始化过程中,首先分配HashTable的内存,接着为bucket分配内存,并使用memset清零,最后设置表的大小和错误状态。这是一个关于数据结构和算法实现的探讨。
3925

被折叠的 条评论
为什么被折叠?



