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

ZoeCloud:香港BGP云服务器,1GB内存/20GB SSD空间/2TB流量/500Mbps/KVM,32元/月

zoecloud怎么样?zoecloud是一家国人商家,5月成立,暂时主要提供香港BGP KVM VPS,线路为AS41378,并有首发永久8折优惠:HKBGP20OFF。目前,解锁香港区 Netflix、Youtube Premium ,但不保证一直解锁,谢绝以不是原生 IP 理由退款。不保证中国大陆连接速度,建议移动中转使用,配合广州移动食用效果更佳。点击进入:zoecloud官方网站地址zo...

野草云提供适合入门建站香港云服务器 年付138元起 3M带宽 2GB内存

野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...

易探云香港云服务器价格多少钱1个月/1年?

易探云怎么样?易探云是目前国内少数优质的香港云服务器服务商家,目前推出多个香港机房的香港云服务器,有新界、九龙、沙田、葵湾等机房,还提供CN2、BGP及CN2三网直连香港云服务器。近年来,许多企业外贸出海会选择香港云服务器来部署自己的外贸网站,使得越来越多的用户会选择易探云作为网站服务提供平台。今天,云服务器网(yuntue.com)小编来谈谈易探云和易探云服务器怎么样?具体香港云服务器多少钱1个...

hash sum mismatch为你推荐
bloomfilter布隆过滤器既然有错误率,为什么还能应用在key-value系统中?md5值哈希值 散列值 MD5值 都是什么意思啊天融信防火墙如何使用天融信NGFW4000防火墙工具spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?booth算法用Booth算法计算-4×3的4位补码乘法运算,要求写出每一步运算过程及运算结果 麻烦详细说明每一步的操作清除电脑垃圾怎样清除电脑垃圾qq业务中心QQ业务办理pci数据捕获和信号处理控制器华硕pci数据捕获和信号处理控制器出现黄色叹号该下载什么驱动pci数据捕获和信号处理控制器大侠们,PCI数据捕获和信号处理控制器不能正常工作了要怎么解决啊,是不是要安装主板驱动啊?银联商务招聘银联商务的正式工与派遣工有啥区别
域名商 edgecast 主机测评网 idc测评网 softbank官网 ev证书 服务器干什么用的 免费申请个人网站 网通服务器托管 绍兴电信 台湾谷歌 linux使用教程 空间申请 域名和主机 广州主机托管 windowsserver2012 wannacry勒索病毒 29美元 装修瓦工培训 kosskeb79 更多