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

RAKsmart便宜美国/日本/中国香港VPS主机 低至月$1.99 可安装Windows

RAKsmart 商家这几年还是在做事情的,虽然他们家顺带做的VPS主机并不是主营业务,毕竟当下的基础云服务器竞争过于激烈,他们家主营业务的独立服务器。包括在去年开始有新增多个数据中心独立服务器,包括有10G带宽的不限流量的独立服务器。当然,如果有需要便宜VPS主机的他们家也是有的,比如有最低月付1.99美元的美国VPS主机,而且可选安装Windows系统。这里商家有提供下面六款六月份的活动便宜V...

2022年最新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码

全新PHP短网址系统URL缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。系统使用了Laravel框架编写,前后台双语言使用,可以设置多域名,还可以开设套餐等诸多功能,值得使用。链接: https://pan.baidu.com/s/1ti6XqJ22tp1ULTJw7kYHog?pwd=sarg 提取码: sarg文件解压密码 www.wn7...

趣米云月付460元,香港CN2云服务器VPS月付低至18元

趣米云早期为做技术起家,为3家IDC提供技术服务2年多,目前商家在售的服务有香港vps、香港独立服务器、香港站群服务器等,线路方面都是目前最优质的CN2,直连大陆,延时非常低,适合做站,目前商家正在做七月优惠活动,VPS低至18元,价格算是比较便宜的了。趣米云vps优惠套餐:KVM虚拟架构,香港沙田机房,线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封...

hash sum mismatch为你推荐
row函数row函数与column函数的运用bloomfilter电脑游戏图像设置里的Bloom是什么意思?weakhashmapWeakHashMap和HashMap的区别策略组组策略是什么,命令是什么???策略组简述组策略的概念 急急急策略组电脑组策略详解oncontextmenuoncontextmenu="return false"是什么意思最开放的浏览器用的最多的三个浏览器是?云图片简单易学画的云彩图片tvosTVOS系统是什么?
万网域名注册 河北服务器租用 vps租用 独享100m winscp enzu kvmla 私人服务器 免费名片模板 免费个人网站申请 网通ip 华为网络硬盘 52测评网 hinet 中国电信测网速 服务器合租 河南移动m值兑换 如何建立邮箱 美国独立日 域名dns 更多