C语言hash表的使用例子

#include 
#include 
#include 
#include 

//#include 
#include "uthash.h"
typedef struct {
    int key;
    int val;
    UT_hash_handle hh;
} Hash;
Hash * hash;
void add(int key,int val){
    Hash *s=NULL;
    s=(Hash*)malloc(sizeof(Hash));
    s->key=key;
    s->val=val;
    HASH_ADD_INT(hash,key,s);
}
int find(int key){
    Hash *s=NULL;
    HASH_FIND_INT(hash,&key,s);
    if(s==NULL){
        return -1;
    }
    return s->val;
}
//从哈希表中删除一个元素
void del(Hash* s){
    HASH_DEL(hash,s);
    free(s);
    s=NULL;
}
int main() {
    add(1,2);
    int cnt=HASH_COUNT(hash);
    printf("%d\n",cnt);

    add(23,2);
    add(23,2);
    cnt=HASH_COUNT(hash);

    Hash *cur=NULL,*tmp=NULL;

    HASH_ITER(hh,hash,cur,tmp){
        printf("%d -> %d\n",cur->key,cur->val);
    }
    printf("%d\n",cnt);
    

    return 0;
}

你可能感兴趣的:(哈希算法,c语言,散列表)