当前位置: 首页 > news >正文

2023年5月第二波疫情百度人工优化

2023年5月第二波疫情,百度人工优化,随州百度网站建设,个人微信网站建设1. uthash简介开源的第三方头文件,这只是一个头文件:uthash.h。uthash还包括三个额外的头文件,主要提供链表,动态数组和字符串。utlist.h为C结构提供了链接列表宏。utarray.h使用宏实现动态数组。utstring.h实现基本的动态字符串。…

1. uthash简介

开源的第三方头文件,这只是一个头文件:uthash.h。

uthash还包括三个额外的头文件,主要提供链表,动态数组和字符串。utlist.h为C结构提供了链接列表宏。utarray.h使用宏实现动态数组。utstring.h实现基本的动态字符串。

2 uthash的使用

2.1 定义结构体

2.2 添加

2.3 查找

2.4 替换

2.5 删除

2.6 循环删除

2.7 删除哈希表所有元素

2.8 计算哈希表元素个数

2.9 遍历哈希表中的所有项目

2.10 排序哈希表


2.1 定义结构体

#include "uthash.h"
struct my_struct {int id;                    /* key */char name[10];UT_hash_handle hh;         /* makes this structure hashable */
};
/*声明哈希为NULL指针*/
struct my_struct *users = NULL;    /* important! initialize to NULL */
当结构体中的键值为字符串数组时
struct my_struct {char name[10];             /* key (string is WITHIN the structure) */int id;UT_hash_handle hh;         /* makes this structure hashable */
};
当结构体中的键值为字符串指针时
struct my_struct {const char *name;          /* key */int id;UT_hash_handle hh;         /* makes this structure hashable */
};

2.2 添加

  HASH_ADD_INT表示添加的键值为int类型

  HASH_ADD_STR表示添加的键值为字符串类型

  HASH_ADD_PTR表示添加的键值为指针类型

  HASH_ADD表示添加的键值可以是任意类型

void add_user(int user_id, char *name) {struct my_struct *s;/*重复性检查,当把两个相同key值的结构体添加到哈希表中时会报错*/HASH_FIND_INT(users, &user_id, s);  /* id already in the hash? *//*只有在哈希中不存在ID的情况下,我们才创建该项目并将其添加。否则,我们只修改已经存在的结构。*/if (s==NULL) {s = (struct my_struct *)malloc(sizeof *s);s->id = user_id;HASH_ADD_INT( users, id, s );  /* id: name of key field */}strcpy(s->name, name);
}

2.3 查找

struct my_struct *find_user(int user_id) {struct my_struct *s;s = (struct my_struct *)malloc(sizeof *s);HASH_FIND_INT( users, &user_id, s );  /* s: output pointer */return s;
}

2.4 替换

void replace_user(HashHead *head, HashNode *newNode) {HashNode *oldNode = find_user(*head, newNode->id);if (oldNode)HASH_REPLACE_INT(*head, id, newNode, oldNode);
}

2.5 删除

要从哈希表中删除结构,必须具有指向它的指针。(如果只有键,请先执行HASH_FIND以获取结构指针)。

void delete_user(struct my_struct *user) {HASH_DEL(users, user);  /* user: pointer to deletee */free(user);             /* optional; it's up to you! */
}

2.6 循环删除

HASH_ITER是一个宏定义,程序执行时被替换为一个循环

void delete_all() {struct my_struct *current_user, *tmp;HASH_ITER(hh, users, current_user, tmp) {HASH_DEL(users,current_user);  /* delete; users advances to next */free(current_user);            /* optional- if you want to free  */}
}

2.7 删除哈希表所有元素

如果您只想删除所有项目,但不释放它们或进行每个元素的清理,则可以通过一次操作更有效地做到这一点:

HASH_CLEAR(hh,users);

2.8 计算哈希表元素个数

unsigned int num_users;
num_users = HASH_COUNT(users);
printf("there are %u users\n", num_users);

2.9 遍历哈希表中的所有项目

void print_users() {struct my_struct *s;for(s=users; s != NULL; s=s->hh.next) {printf("user id %d: name %s\n", s->id, s->name);}
}

2.10 排序哈希表

HASH_SORT( users, name_sort );

http://www.hkea.cn/news/603356/

相关文章:

  • 云南做网站的公司外贸谷歌优化
  • 网页设计学徒培训可试学巢湖seo推广
  • 让顾客心动的句子seo模拟点击软件源码
  • 设计类专业包括哪些kj6699的seo综合查询
  • 手机网站制作哪家好查关键词
  • 米拓企业网站管理系统电商培训机构排名前十
  • 做效果图有哪些网站seo点击排名
  • 网络营销推广网站收录seo推广排名平台有哪些
  • 产品经理如何看待网站开发广州软件系统开发seo推广
  • wordpress 忘记管理员如何做网站seo
  • app和网站哪个有优势淘宝关键词排名
  • wordpress该域名宁波网站seo公司
  • 建购物网站怎么建呀简单的网站建设
  • 江苏省建设教育协会网站首页百度知道合伙人答题兼职入口
  • 做优化的网站平台搭建
  • 做网站需要多久网络推广是什么专业
  • 厦门加盟网站建设线上推广营销
  • 定制网站案例seo搜索引擎优化薪酬
  • 网站制作成功后怎么使用浏览器观看b站视频的最佳设置
  • 一家专门做开网店的网站北京seo专员
  • 专业企业网站搭建服务头条权重查询
  • 去哪儿网站上做民宿需要材料免费的黄冈网站有哪些平台
  • 网站建设网现在推广什么app最挣钱
  • 嘉兴装修公司做网站安装百度到桌面
  • 电商网站特点外贸营销网站建站
  • 上海市住房城乡建设管理委员会网站网络营销软文范例大全800
  • 莱芜区政协网站做网络优化的公司排名
  • 太原网站建设开发公司电商运营基本知识
  • php做企业网站seo网站推广企业
  • 万网网站备案授权书免费发布推广信息的b2b