c语言中哈希表uthash的使用(持续补充)


定义


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);
}

后续遇到了新的再继续补充🐱‍👤


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM