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

CloudCone 新增洛杉矶优化线路 年付17.99美元且简单线路测试

CloudCone 商家在以前的篇幅中也有多次介绍到,这个商家也蛮有意思的。以前一直只有洛杉矶MC机房,而且在功能上和Linode、DO、Vultr一样可以随时删除采用按时计费模式。但是,他们没有学到人家的精华部分,要这样的小时计费,一定要机房多才有优势,否则压根没有多大用途。这不最近CloudCone商家有点小变化,有新人洛杉矶优化线路,具体是什么优化的等会我测试看看线路。内存CPU硬盘流量价格...

阿里云秋季促销活动 轻量云服务器2G5M配置新购年60元

已经有一段时间没有分享阿里云服务商的促销活动,主要原因在于他们以前的促销都仅限新用户,而且我们大部分人都已经有过账户基本上促销活动和我们无缘。即便老用户可选新产品购买,也是比较配置较高的,所以就懒得分享。这不看到有阿里云金秋活动,有不错的促销活动可以允许产品新购。即便我们是老用户,但是比如你没有购买过他们轻量服务器,也是可以享受优惠活动的。这次轻量服务器在金秋活动中力度折扣比较大,2G5M配置年付...

易探云:香港CN2云服务器低至18元/月起,183.60元/年

易探云怎么样?易探云最早是主攻香港云服务器的品牌商家,由于之前香港云服务器性价比高、稳定性不错获得了不少用户的支持。易探云推出大量香港云服务器,采用BGP、CN2线路,机房有香港九龙、香港新界、香港沙田、香港葵湾等,香港1核1G低至18元/月,183.60元/年,老站长建站推荐香港2核4G5M+10G数据盘仅799元/年,性价比超强,关键是延迟全球为50ms左右,适合国内境外外贸行业网站等,如果需...

hash sum mismatch为你推荐
weakhashmapMap接口,HashMap和HashTable的相同点和不同点分别是什么?bindserviceservice在手机程序中起什么作用slideshare什么是slide sandal备忘录模式为什么我的华为手机界面总是有个框框在备忘录上面smartuploadjspsmartupload如何使用?layoutsubviews如何让NSSplitView的子View的大小固定相似图片搜索如何输入图片并且搜出最相似的图片?图片存储怎么把存图片存储另一种方式?优众网瑞达恒慧讯网是做什么的?12306注册12306网站账户注册
手机域名注册 郑州服务器租用 linode代购 cloudstack 美国便宜货网站 双12活动 ev证书 java空间 我爱水煮鱼 129邮箱 世界测速 吉林铁通 卡巴斯基免费试用版 无限流量 域名与空间 东莞idc 中国联通宽带测试 1美元 美国主机 卡巴斯基官方下载 更多