定义
- 键
- 值:结构体实例的指针
- UT_hash_handle
#include<uthash.h>
typedef struct{
int id; //key
int value;
UT_hash_handle hh; //UT_hash_handle 字段必须要存在于你定义的结构体中,用来标记该结构体是哈希表。
}HashTable;
操作
1.初始化
哈希表结构体初始化为NULL指针
HashTable *hash = NULL;
2.查找
HASH_FIND_INT(ht,&key,s)
// 查找
int find(int key)
{
Hash *s = NULL;
HASH_FIND_INT(hash, &key, s);
if (s != NULL) {
return 1;
} else {
return 0;
}
}
- 第一个参数为哈希表
- 第二个参数指向键
- 第三个参数为最终输出变量
- 最终结果是 s 指向具有给定键的结构,或者如果在散列中找不到键,则为 NULL。
3.添加
HASH_ADD_INT
// 增加
void add(int key, int value)
{
Hash *s = NULL;
s = (Hash *)malloc(sizeof(Hash));
s->key = key;
s->value = value;
HASH_ADD_INT(hash, key, s);
}
- 第一个参数是哈希表
- 第二个参数是键的名称
- 最后一个参数是指向要添加的结构指针
4.删除
// 删除
void delete (Hash *s)
{
HASH_DEL(hash, s);
free(s);
s = NULL;
}
- 第一个参数是哈希表,
- 第二个参数指向我们要从哈希中删除的结构的指针。