C语言哈希表用法 |
您所在的位置:网站首页 › sizeof的头文件是什么 › C语言哈希表用法 |
为了认证C语言专业级上机编程,我特地学习了C语言的哈希表。 哈希表在头文件"uthash.h"中已经有了,只需要简单学习一下用法即可。
1,哈希结构体 #include "uthash.h" typedef struct { int key; int value; UT_hash_handle hh; } Hash; Hash *hash = NULL;其中UT_hash_handle是头文件"uthash.h"中定义的,然后Hash结构体是自定义的。 key的类型可以是int, char *, char[],void* 这4种,value可以是任意类型
2,增删查 // 增加 void add(int key, int value) { Hash *s = NULL; s = (Hash *)malloc(sizeof(Hash)); s->key = key; s->value = value; HASH_ADD_INT(hash, key, s); } // 查找 int find(int key) { Hash *s = NULL; HASH_FIND_INT(hash, &key, s); if (s != NULL) { // 查找到结果 return 1; } else { return 0; } } // 删除 void delete (Hash *s) { HASH_DEL(hash, s); free(s); s = NULL; }其中HASH_ADD_INT、HASH_FIND_INT、HASH_DEL都是标准函数,其他都是自定义代码。 注意,插入之前要先查找确认没有这个元素。 如果要修改已经存在的键值对,要先删除再插入。
3,遍历,清空,计数 // 清空 void clearAll() { Hash *s, *tmp; HASH_ITER(hh, hash, s, tmp) { delete (s); } } //计数 int cnt = HASH_COUNT(hash);其中,HASH_ITER是标准宏,HASH_COUNT是标准函数,其他都是自定义代码。
4,其他类型的key //char* key HASH_ADD_KEYPTR //char key[100] HASH_ADD_STR //void* key HASH_ADD_PTR //void* key HASH_FIND_PTR除了这4个函数不一样之外,其他函数都一样。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |