hash sum mismatchC语言 哈希表生成及哈希查找算法 输入:待哈希数据序列 功能要求:输出哈希方法和

hash sum mismatch  时间:2022-02-24  阅读:()

C语言 哈希表生成及哈希查找算法 输入:待哈希数据序列 功能要求:输出哈希方法和

你看看这个哈希算法吧、、貌似。,,也差不多咯 #include<stdlib.h> #include<stdio.h> #include<malloc.h> typedef int KeyType; typedef struct /*元素类型定义*/ { KeyType key; /*关键字*/ int hi; /*冲突次数*/ }DataType; typedef struct /*哈希表类型定义*/ { DataType *data; int tableSize; /*哈希表的长度*/ int curSize; /*表中关键字个数*/ }HashTable; void CreateHashTable(HashTable *H,int m,int p,int hash[],int n); int SearchHash(HashTable H,KeyType k); void DisplayHash(HashTable H,int m); void HashASL(HashTable H,int m); void CreateHashTable(HashTable *H,int m,int p,int hash[],int n) /*构造一个空的哈希表,并处理冲突*/ { int i,sum,addr,di,k=1; (*H).data=(DataType*)malloc(m*sizeof(DataType));/*为哈希表分配存储空间*/ if(!(*H).data) exit(-1); for(i=0;i<m;i++) /*初始化哈希表*/ { (*H).data[i].key=-1; (*H).data[i].hi=0; } for(i=0;i<n;i++) /*求哈希函数地址并处理冲突*/ { sum=0; /*冲突的次数*/ addr=hash[i]%p; /*利用除留余数法求哈希函数地址*/ di=addr; if((*H).data[addr].key==-1) /*如果不冲突则将元素存储在表中*/ { (*H).data[addr].key=hash[i]; (*H).data[addr].hi=1; } else /*用线性探测再散列法处理冲突*/ { do { di=(di+k)%m; sum+=1; } while((*H).data[di].key!=-1); (*H).data[di].key=hash[i]; (*H).data[di].hi=sum+1; } } (*H).curSize=n; /*哈希表中关键字个数为n*/ (*H).tableSize=m; /*哈希表的长度*/ } int SearchHash(HashTable H,KeyType k) /*在哈希表H中查找关键字k的元素*/ { int d,d1,m; m=H.tableSize; d=d1=k%m; /*求k的哈希地址*/ while(H.data[d].key!=-1) { if(H.data[d].key==k)/*如果是要查找的关键字k,则返回k的位置*/ return d; else /*继续往后查找*/ d=(d+1)%m; if(d==d1) /*如果查找了哈希表中的所有位置,没有找到返回0*/ return 0; } return 0; /*该位置不存在关键字k*/ } void DisplayHash(HashTable H,int m) /*输出哈希表*/ { int i; printf("哈希表地址:"); for(i=0;i<m;i++) printf("%-5d",i); printf(" "); printf("关键字key: "); for(i=0;i<m;i++) printf("%-5d",H.data[i].key); printf(" "); printf("冲突次数: "); for(i=0;i<m;i++) printf("%-5d",H.data[i].hi); printf(" "); } void HashASL(HashTable H,int m) /*求哈希表的平均查找长度*/ { float average=0; int i; for(i=0;i<m;i++) average=average+H.data[i].hi; average=average/H.curSize; printf("平均查找长度ASL=%.2f",average); printf(" "); } void main() { int hash[]={23,35,12,56,123,39,342,90}; int m=11,p=11,n=8,pos; KeyType k; HashTable H; CreateHashTable(&H,m,p,hash,n); DisplayHash(H,m); k=123; pos=SearchHash(H,k); printf("关键字%d在哈希表中的位置为:%d ",k,pos); HashASL(H,m); }

Friendhosting 黑色星期五 VDS/VPS可享四五折优惠促销

Friendhosting商家在前面的篇幅中也又陆续介绍到,是一家保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌克兰和美国洛杉矶等。这不近期黑色星期五活动,商家也有推出了黑五优惠,VPS全场一次性45折,虚拟主机4折,全球多机房可选,老用户续费可获9折加送1个月使用时长,VDS折后最低仅€14.53/年,有需要的可以看看。Friendhos...

ZJI:520元/月香港服务器-2*E5-2630L/32GB/480G SSD/30M带宽/2IP

ZJI发布了一款7月份特别促销独立服务器:香港邦联四型,提供65折优惠码,限量30台(每用户限购1台),优惠后每月520元起。ZJI是原来Wordpress圈知名主机商家:维翔主机,成立于2011年,2018年9月启用新域名ZJI,提供中国香港、台湾、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册等业务。下面列出这款服务器的配置信息。香港邦联四型CPU:2*E5-2...

piayun(pia云)240元/季起云服务器,香港限时季付活动,cn2线路,4核4G15M

pia云怎么样?pia云是一家2018的开办的国人商家,原名叫哔哔云,目前整合到了魔方云平台上,商家主要销售VPS服务,采用KVM虚拟架构 ,机房有美国洛杉矶、中国香港和深圳地区,洛杉矶为crea机房,三网回程CN2 GIA,带20G防御。目前,Pia云优惠促销,年付全场8折起,香港超极速CN2季付活动,4核4G15M云服务器仅240元/季起,香港CN2、美国三网CN2深圳BGP优质云服务器超高性...

hash sum mismatch为你推荐
移动测速请教GPS导航的固定测速与移动测速是什么意思?appcan怎样做手机软件gravatar游戏王mycrad怎样换头像?g2g电子商务中的g2g模式代表settimervc++6.0 settimer函数是怎么用的啊,能给个例子在讲解一下行么fcloseC语言文件关闭函数fclose(文件指针)是什么?策略组怎样打开组策略???李昊天铠甲勇士2刑天的李昊天秘密是什么jdk6jdk-6u14-windows-i586.exe是什么,具体点,谢谢jqlJQL JINQILIN注册过商标吗?还有哪些分类可以注册?
深圳域名空间 国外免费vps 域名服务器是什么 3322动态域名 踢楼 精品网 gitcafe 建站代码 主机合租 魔兽世界台湾服务器 国外在线代理 北京双线 可外链相册 天翼云盘 根服务器 yundun 1元域名 电信网络测速器 阿里云邮箱登陆 nnt 更多