C算法-UT哈希

本文介绍了C语言中使用UT哈希库进行哈希表操作的方法,包括键值为INT型时的添加、查找、遍历、排序、计数和删除操作。同时,还涉及了键值为STRING型和STRING指针型的情况。通过具体的示例和代码,详细解析了UT哈希库的使用技巧。
摘要由CSDN通过智能技术生成

汇总:
参考:http://troydhanson.github.io/uthash/userguide.html
在这里插入图片描述

一、键值是INT型
1、定义结构体,对应键值是整形int,需要有个全局指针比如users

typedef struct  {
   
	int id;                    /* key */
	char name[10];
	int cnt;
	UT_hash_handle hh;         /* makes this structure hashable */
}my_struct;
my_struct *users = NULL;    /* important! initialize to NULL */

2、ADD&查找操作
先HASH_FIND_INT,如果不能找到,那么新加到HASH_ADD_INT中;如果能找到,就对cnt++;
注意HASH_FIND_INT的第二个入参是当前键值的名称

void add_user(int user_id, char *name, int cnt) {
   
	my_struct *s;
	HASH_FIND_INT(users, &user_id, s);  /* id already in the hash? */
	if (s == NULL) {
   
		s = (my_struct *)malloc(sizeof *s);
		s->id = user_id;
		s->cnt = cnt;
		strcpy(s->name, name);
		HASH_ADD_INT(users, id, s);  /* id: name of key field */
	} else {
   
		s->cnt += cnt;
	}
}

3、这个遍历操作比较新鲜;next是s->hh.next

void print_users() {
   
	my_struct *s;
	for (s = users; s != NULL; s = s
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值