c語言中雜湊表uthash的使用(持續補充)
阿新 • • 發佈:2020-12-04
定義
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);
}
後續遇到了新的再繼續補充