定義
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);
}
后續遇到了新的再繼續補充🐱👤