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;}

A2Hosting三年付$1.99/月,庆祝18周年/WordPress共享主机最高优惠81%/100GB SSD空间/无限流量

A2Hosting主机,A2Hosting怎么样?A2Hosting是UK2集团下属公司,成立于2003年的老牌国外主机商,产品包括虚拟主机、VPS和独立服务器等,数据中心提供包括美国、新加坡softlayer和荷兰三个地区机房。A2Hosting在国外是一家非常大非常有名气的终合型主机商,拥有几百万的客户,非常值得信赖,国外主机论坛对它家的虚拟主机评价非常不错,当前,A2Hosting主机庆祝1...

Stablehost 美国主机商黑五虚拟主机四折

如今我们网友可能较多的会选择云服务器、VPS主机,对于虚拟主机的话可能很多人不会选择。但是我们有些外贸业务用途的建站项目还是会有选择虚拟主机的。今天看到的Stablehost 商家虚拟主机在黑五期间也有四折优惠,对于这个服务商而言不是特别的喜欢,虽然他们商家和我们熟悉的老鹰主机商有些类似,且在后来老鹰主机改版和方案后,Stablehost 商家也会跟随改版,但是性价比认为不如老鹰主机。这次黑色星期...

爱用云互联租用服务器租美国、日本、美国、日本、购买2天内不满意可以退换,IP可免费更换!

爱用云互联怎么样?爱用云是一家成立于2018年的老牌商家旗下的服务器销售品牌,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端...

hash hash为你推荐
按键精灵教程按键精灵怎么使用nvidia官方网站官网NVIDIA驱动和win10系统不兼容,怎么解决?sg什么意思篮球中内线和外线是什么意思官方网店官方网店和官方旗舰店有什么区别?约束是什么意思爱不约束是什么意思360官网打不开360打不开!gps简介GPS是什么趋势防毒趋势杀毒软件如何?网游木马网游盗号木马是怎么工作的?安全网络攻防大赛安全知识竞赛
域名查询 新加坡虚拟主机 短域名 域名管理 stablehost 512av 天互数据 圣诞促销 699美元 国外代理服务器地址 爱奇艺vip免费试用7天 web服务器是什么 东莞服务器托管 日本代理ip 中国域名 万网注册 阿里云邮箱申请 国外代理服务器 广州服务器托管 汤博乐 更多