美文网首页
C语言中哈希表uthash的使用

C语言中哈希表uthash的使用

作者: 再凌 | 来源:发表于2020-03-08 19:28 被阅读0次

在Leetcode做题的时候, 发现有人使用哈希表做, 大大降低了时间复杂度, 于是赶快找来学习一下.

C语言中的哈希表是基于开源项目UT_Hash实现的, 在leetcode中已经自动包括其头文件, 因此可以直接使用.

定义

typedef struct UT_Hash{
UT_hash_handle hh;
type value;//这里是你要存储的数据
int id;//这里是存储的关键字
}UT_Hash
UT_Hash table = NULL, *p1 = NULL, *p2 = NULL;

查找

HASH_FIND_INT(table, &index, p1);
if(p1)
//exist

增加

为p1开辟空间
p1 = (UT_Hash*)malloc(sizeof(UT_Hash));
//add value and index to p1, 填充id和value字段
....
HASH_ADD_INT(table, name, p1) //"name" 是具体的键名, 会在编译的时候被宏替换, 在本文中, name皆为"id"

删除

HASH_DELETE_INT(table, p1);
//这里只是将p1在table中删除了, 并没有free掉整个p1节点

相关文章

  • C语言中哈希表uthash的使用

    在Leetcode做题的时候, 发现有人使用哈希表做, 大大降低了时间复杂度, 于是赶快找来学习一下. C语言中的...

  • map hash_map(挖坑)

    学习内容来自C++ STL中哈希表 hash_map 未学C++之哈希表的使用 map 使用count,返回的是被...

  • Hash表的简单理解

    哈希表概述: Objective-C 中的字典NSDictionary底层其实是一个哈希表,实际上绝大多数语言中字...

  • redis源码4--字典Dict:关键的结构定义

    源码文件在 dict.h 和 dict.c 中 哈希表节点定义 哈希表节点使用 dictEntry 结构表示,一个...

  • 2019 算法面试相关(leetcode)--哈希表

    哈希表相关的原理可以参考下:浅谈哈希表(HashTable)深入理解哈希表哈希表的理解理解HashSet及使用 哈...

  • 优秀开源库utash之uthash.h

    一、简介 1.1 uthash介绍 uthash是C的比较优秀的开源代码,它实现了常见的hash操作函数,例如查找...

  • Redis中的字典

    Redis中的字典 Redis中的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表结点,而每个哈希表结点保...

  • Redis数据结构与对象——哈希

    1 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表可以有多个哈希表节点,即每个哈希表节点就保存了字...

  • JavaScript 数据结构之集合

    一、 集合的介绍 几乎每一种编程语言中,都有集合结构, 常见是实现方式是哈希表,这里我们使用 JavaScript...

  • 4.字典

    字典 1. 字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,每个哈希表节点...

网友评论

      本文标题:C语言中哈希表uthash的使用

      本文链接:https://www.haomeiwen.com/subject/vpejdhtx.html