struct hashTable{
int key;
int val;
UT_hash_handle hh;//使定义的结构具有哈希性
};
struct hashTable* hashtable;
struct hashTable* find(int ikey){
struct hashTable* tmp;
HASH_FIND_INT(hashtable, &ikey,tmp);
return tmp;
}
/*在上述代码中,第一个参数hashtable是哈希表,第二个参数是ikey的地址(一定要传递地址)。
最后tem是输出变量。当可以在哈希表中找到相应键值时,temp返回给定键的结构,当找不到时temp
返回NULL*/
void insert(int ikey,int ival){
/*重复性检查,当把两个相同key值的结构体添加到哈希表中时会报错*/
struct hashTable* it = find(ikey);
/*只有在哈希中不存在ID的情况下,我们才创建该项目并将其添加。
否则,我们只修改已经存在的结构。*/
if (it == NULL){
struct hashTable* tmp = malloc(sizeof(struct hashTable));
tmp->key = ikey,tmp->val= ival;
HASH_ADD_INT(hashtable,key,tmp);
}else{
it ->val = ival;
}
}
/*
HASH_ADD_INT表示添加的键值为int类型 HASH_ADD_STR表示添加的键值为字符串类型
HASH_ADD_PTR表示添加的键值为指针类型 HASH_ADD表示添加的键值可以是任意类型
HASH_ADD_INT函数中,第一个参数hashtable是哈希表,第二个参数ikey是键字段
两数相加使用哈希表C语言详解
最新推荐文章于 2024-05-22 10:06:55 发布