在头文件"uthash.h"中,已经有了哈希表的库函数,只需学习其用法即可。
定义
typedef struct HashTable
{
int key;
int value;
UT_hash_handle hh;
} MyHash;
MyHash * myhs = NULL;
注1:UT_hash_handle必不可少
注2:myhs在使用时一定要初始化为空
查找
MyHash * find(int key1)
{
MyHash * tmp = NULL;
HASH_FIND_INT(myhs, &key1, tmp);
return tmp;
}
注1:HASH_FIND_INT()中,参数key需要取地址
注2:返回值为结构体指针,是为了方便使用时拿到目标键值对应的实值
插入
void insert(int key1, int value1)
{
MyHash * tmp1 = find(key1);
if (NULL == tmp1)
{
MyHash * tmp2 = malloc(sizeof(MyHash));
tmp2->key = key1;
tmp2->value = value1;
HASH_ADD_INT(myhs, key, tmp2);
}
else
{
tmp1->value = value1;
}
}
注1:ADD函数中参数key不需要取地址
注2:ADD函数中参数key应输入key而不是key1
当key为char,value为int型时,代码待补充