定义
struct hashTable{
int key;
int val;
UT_hash_handle hh;//一定要有的定义
}
struct hashTable* hashtable = NULL;
查找
查找到的结果会返回给tem。
struct hashTable* find(struct hashTable** hashtable, int key){
struct hashTable* tem = malloc(sizeof(struct hashTable));
HASH_FIND_INT(*hashtable, &key, tem);
return tem;
}
插入
HASH_ADD_INT表示添加的键值为int类型。
HASH_ADD_STR表示添加的键值为字符串类型。
HASH_ADD_PTR表示添加的键值为指针类型。
HASH_ADD表示添加的键值可以是任意类型。
void insert(struct hashTable** hashtable, int key, int val){
struct hashTable* tem = malloc(sizeof(struct hashTable));
tem->val = val;
tem->key = key;
HASH_ADD_INT(*hashtable, key, tem);//"key" 是具体的键名, 会在编译的时候被宏替换
}
删除
要从哈希表中删除结构,必须具有指向它的指针。(如果只有键,请先执行HASH_FIND以获取结构指针)。
void del(struct hashTable** hashtable, int key){
struct hashTable* tem = find(hashtable, key);
HASH_DEL(*hashtable, tem);
free(tem);
}
后续遇到了新的再继续补充?????
原文:https://www.cnblogs.com/LoveStrawberry/p/14087081.html