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

bgpto:BGP促销,日本日本服务器6.5折$93/月低至6.5折、$93/月

bgpto怎么样?bgp.to日本机房、新加坡机房的独立服务器在搞特价促销,日本独立服务器低至6.5折优惠,新加坡独立服务器低至7.5折优惠,所有优惠都是循环的,终身不涨价。服务器不限制流量,支持升级带宽,免费支持Linux和Windows server中文版(还包括Windows 10). 特色:自动部署,无需人工干预,用户可以在后台自己重装系统、重启、关机等操作!bgpto主打日本(东京、大阪...

ProfitServer$34.56/年,5折限时促销/可选西班牙vps、荷兰vps、德国vps/不限制流量/支持自定义ISO

ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...

无忧云:洛阳BGP云服务器低至38.4元/月起;雅安高防云服务器/高防物理机优惠

无忧云怎么样?无忧云,无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点。一、无忧云官网点击此处进入无忧云官方网站二...

hash hash为你推荐
融360我在融360APP上申请二十万没通过,今天有人打电话给我说可以通过,这个是真的吗?防护防护用品包括哪些?jsp源码实现登陆功能的JSP代码怎么编写?招行信用卡还款招行信用卡还款顺序是怎样的监控员工单位要装摄像头监控员工犯法吗网络图绘制双代号网络图的绘制方法?soap是什么意思捡肥皂是什么意思啊?无恶意,就好奇暂停线程如何正确的更好的停止一个线程购物网站设计购物网站如何设计漂亮且实用的购物车分销渠道案例海尔公司的分销渠道是?
com域名 欧洲欧洲vps 免费申请域名和空间 dropbox网盘 太原网通测速平台 空间技术网 免费cdn 吉林铁通 上海电信测速 浙江服务器 免费个人网页 服务器硬件配置 葫芦机 腾讯云平台 免费的加速器 cpu使用率过高怎么办 vim命令 dbank 西安电信测速网 dns是什么意思 更多