1. 程式人生 > 實用技巧 >c語言中雜湊表uthash的使用(持續補充)

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

後續遇到了新的再繼續補充