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

如何网站增加域名客户推广渠道有哪些

如何网站增加域名,客户推广渠道有哪些,炒币网站开发,小学学校网站一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…

 一. 简介

前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下:

C语言中提供的第三方库uthash常用接口-CSDN博客

本文简单学习一下第三方库 uthash库对哈希表的操作。

二. uthash库哈希表操作示例

uthash库提供了对不同类型数据类型的键值时的操作接口,这里举例key键值为 char* 类型,虽然是指针类型,但是进行比较时是对key键值的比较,而不是比较指针地址是否相等。所以,使用的是 uthash库中对字符串类型键的接口。

1. 定义哈希表结构体

首先需要定义哈希表结构体,该结构体包括要存储的数据和 UT_hash_handle句柄。例如如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "uthash.h"//定义哈希表的结构体
typedef struct hash_node{char* key; //键char*  value; //值UT_hash_handle hh; //hthash库的哈希表句柄
} hash_node;hash_node* hash_table = NULL; //定义一个哈希表指针

可以看出,哈希表的结构体包括键值与实际数据。可以通过哈希函数将键值映射到哈希表中的某个位置。

2. 向哈希表插入新数据

将新的数据插入到哈希表中:

//将新数据插入到哈希表中
void insert_hash_table(const* char key, char* value) {if(!key) {return;}hash_node* out_node;//检查键是否已存在HASH_FIND_STR(hash_table, key, out_node);if(out_node) { //键已存在哈希表中,更新值(先释放旧值内存)free(out_node->value);out_node->value = strdup(value);if(!out_node->value) {fprintf(stderr, "内存分配失败!\n");}}//键不存在哈希表中hash_node* new_node = (hash_node*)malloc(sizeof(hash_node));new_node->key = strdup(key);new_node->value = strdup(value);if((!new_node->key) || (!new_node->value)) {free(new_node->key);free(new_node->value);free(new_node);return;}//将新键值对插入哈希表中HASH_ADD_KEYPTR(hash_handle, hash_table, new_node->key, strlen(new_node->key), new_node);
}

向哈希表中插入新元素时,首先检查新元素的键是否已存在哈希表中,已存在则更新key键对应的数据,否则,创建新的节点值并插入哈希表中。

2. 根据键查找对应的值

在哈希表中根据键查找对应的值,实现如下:

//根据键查找值
const char* find_by_key(const char* key) {hash_node* out_node = NULL;//根据键查找对应的值HASH_FIND_STR(hash_table, key, out_node);return out_node ? out_node->value : NULL;
}

3. 根据键值删除对应的数据

在哈希表查找某个键对应的数据,实现如下:

delete_data_by_key(const char* key) {hash_node * out_node = NULL;//根据键查找对应的值HASH_FIND_STR(hash_table, key, out_node);if(!out_node) {printf("not value by key!\n");return;}//删除key对应的值HASH_DEL(hash_table, out_node);free(out_node->key); //释放键内存free(out_node->value); //释放值内存free(out_node);  //释放节点内存
}

注意,当删除哈希表中键对应的值后,需要释放该键内存,值内存,以及该节点内存资源。

4. 遍历哈希表

遍历哈希表实现如下:

//遍历哈希表
void traverse_hash_table(hash_node* hash_table) {hash_node* hash_current, *hash_next;HASH_ITER(hash_handle, hash_table, hash_current, hash_next) {printf("current key: %s, current value: %s\n", hash_current->key, hash_current->value);}
}

5. 清空哈希表

清空哈希表使用  HASH_DEL(head, delptr) 宏定义,但是,内存释放还需要手动进行释放。

//清空哈希表
void clear_hash_table(void) {hash_node* hash_current, *hash_next;HASH_ITER(hash_handle, hash_table, hash_current, hash_next) {HASH_DEL(hash_table, hash_current);//需要手动释放内存free(hash_current->key);free(hash_current->value);free(hash_current);}

http://www.dtcms.com/wzjs/821553.html

相关文章:

  • 济南智能网站建设哪家好推广营销平台排名
  • 怎么做简单的微信浏览的网站rs232国产
  • 企业网站建设建议陕西企业营销型网站建设
  • 商城类网站能做响应式设计吗搜索网站仿站
  • 上海私人网站建设百度关键词屏蔽
  • 类似qq空间的网站wordpress 后台移除新闻
  • 做网站维护有前途吗如何自己开网店做网店
  • 潍坊网站制作培训全国货运信息网配货
  • 苏州定制建站网站建设有专门做摄影画册的网站
  • 陕西煤化建设集团网站wordpress伪静态说明
  • 邯郸质量一站式服务平台上线windows 2003 wordpress
  • 药店怎么建设自己的网站wordpress keywords插件
  • 外贸网站如何制作成都网站建设优化企业排名
  • 什么博客可以做网站做区块链的网站
  • 建站平台 阿里巴巴优化英语
  • 答题网站开发长春百度推广哪家好
  • 网站建设与运营固定资产郑州河北建设工程信息网站
  • 网站建设策划优点中文网站模板下载
  • 做网站80端口如何用自己电脑做网站服务器
  • 怎样做一个购物型的网站网站备案核验单
  • 想学网络营销网站建设广东建设信息网是什么网站
  • 重庆微信开发网站建设去哪儿旅行app下载安装
  • 小公司网站怎么建自建站怎么接入支付
  • 深圳网站关键词优化公司哪家好正规手机网站怎么做
  • 手机网站开发模拟手机成品网站1688入口
  • 省企联网站建设要求潍坊科技学院
  • 关于建筑建设的网站制作模板网站
  • 网络优化网络维护网络建站百度开户做网站2400
  • 个人网站 logo 版权 备案 没用专业网站制作公司采用哪些技术制作网站?
  • 做招商加盟网站erp教学零基础入门