C语言哈希表用法

您所在的位置:网站首页 sizeof的头文件是什么 C语言哈希表用法

C语言哈希表用法

2023-07-26 19:18| 来源: 网络整理| 查看: 265

为了认证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