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