hash hashc语言hash函数有几种

hash hash  时间:2022-03-02  阅读:()

c语言hash函数有几种

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include?#include?//这里我自己设计一个hash算法来快速查找一堆数字中相等的数字,这也许是最接近原理的算法了//一个整数整除27后的来作为hash函数//定义一个保存实际数据的结构体节点struct?data_node{????int?num;????int?count;????struct?data_node?*next;};//定义一个结构体时hash表的一部分typedef?struct{????int?key;?//余数????struct?data_node?*p;?//链表的头指针}?hash_node;#define?HASH_SIZE?27int?do_hash(int?num)?//hash表来求余数,这样就可以了{????return?num%HASH_SIZE;}//初始化//添加数字//更新数字//删除数字//查找数字hash_node?HashTable[HASH_SIZE];?//这里申明一个hashtable的数组//初始化函数,需要做的事将key复制为null,将p指针指向null,返回一个头指针来指向这个hashtablevoid?InitHashTable(hash_node?*HashTable) {????//进行参数的校验????for(int?i=0;i????{ ????????HashTable[i].key?=?0;????????HashTable[i].p?=NULL;????} }//保存到这个链表中//如果这个链表是空的话,就作为头指针,如果这个链表不为空,则添加到吧数字添加到末尾int?savedata(struct?data_node?**head,int?num) {????structdata_node?*tmp_p?=?*head;????structdata_node?*p?=?(structdata_node?*)malloc(sizeof(structdata_node));????if(p?==?NULL)????????return0;????if(*head?==?NULL) ????{ ????????*head?=?p;????????p->count?=?1;????????p->num?=?num;????????p->next?=?NULL;????}????else//如果不为空,则这个时候应该添加到链表末尾????{????????while(tmp_p?!=?NULL)//如果存在,则将这个节点的count加1就可以了????????{????????????if(tmp_p->num?==?num) ????????????{ ????????????????free(p);????????????????++tmp_p->count?;????????????????return0;????????????}????????????if(tmp_p->next?==?NULL)????????????????break;????????????tmp_p?=?tmp_p->next;????????} ????????tmp_p->next?=?p;????????p->count?=1;????????p->num?=?num;????????p->next?=?NULL;????}????return0;}//添加数字//将这个数字经过hash求出结果,然后再保存到相应的链表中//返回真或者假就可以了int?add_hash(hash_node?*HashTable,int?num) {????intmod?=?do_hash(num);????returnsavedata(&HashTable[mod].p,num);}intmain() {????intnum?=?100;????hash_node?*H?=?HashTable;????InitHashTable(H);????add_hash(H,num);????add_hash(H,num);????add_hash(H,3);????add_hash(H,1);????add_hash(H,4);????//在这里我们可以发现一个好的hash函数是多么的重要,如果hash函数不好造成很多冲突的话,效率并不会提高很多的,理想的情况是冲突几乎没有????//这也就是设计hash函数的精髓所在????return?0;}

sharktech:老牌高防服务器商,跳楼价,1G独享$70、10G共享$240、10G独享$800

不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...

腾讯云轻量服务器两款低价年付套餐 2核4GB内存8M带宽 年74元

昨天,有在"阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元"文章中记录到阿里云轻量服务器2GB内存、5M带宽一年60元的活动,当然这个也是国内机房的。我们很多人都清楚备案是需要接入的,如果我们在其他服务商的域名备案的,那是不能解析的。除非我们不是用来建站,而是用来云端的,是可以用的。这不看到其对手腾讯云也有推出两款轻量服务器活动。其中一款是4GB内存、8M带宽,这个比阿里云还要狠。这个真...

美得云(15元/月)美国cera 2核4G 15元/月 香港1核 1G 3M独享

美得云怎么样?美得云好不好?美得云是第一次来推广软文,老板人脾气特别好,能感觉出来会用心对待用户。美得云这次为大家提供了几款性价比十分高的产品,美国cera 2核4G 15元/月 香港1核 1G 3M独享 15元/月,并且还提供了免费空间给大家使用。嘻嘻 我也打算去白嫖一个空间了。新用户注册福利-8折优惠码:H2dmBKbF 截止2021.10.1结束。KVM架构,99.99%高可用性,依托BGP...

hash hash为你推荐
软件详细设计说明书软件产品规格说明书都包含什么内容nvidia官方网站N卡的官网是什么?4g上网卡4g无线上网卡t320华为T320怎么样售后软件有没有什么软件可以接单手机维修sd卡座SD卡座有能满足CE认证的吗?主板说明书精英主板中文说明书修复网络lspLSP修复是什么意思?科学计算器说明书计算器的使用方法?约束是什么意思cad软件里“推断约束是什么意思”
免费国际域名 出租服务器 广东vps 主机测评网 l5639 163网 贵州电信宽带测速 服务器cpu性能排行 免费ftp空间申请 权嘉云 hostker 网站卫士 佛山高防服务器 服务器监测 drupal安装 国外在线代理服务器 服务器防火墙 中国域名 实惠 徐州电信 更多