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);
} 
		  
		  
		      
			  
		  
			  			   
			      
			        
			          
			          Megalayer 商家算是新晋的服务商,商家才开始的时候主要是以香港、美国独立服务器。后来有新增菲律宾机房,包括有VPS云服务器、独立服务器、站群服务器等产品。线路上有CN2优化带宽、全向带宽和国际带宽,这里有看到商家的特价方案有增加至9个,之前是四个的。在这篇文章中,我来整理看看。第一、香港服务器系列这里香港服务器会根据带宽的不同区别。我这里将香港机房的都整理到一个系列里。核心内存硬盘IP带宽...
			         
			       
				  
			     
							   
			      
			        
			          
			          易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。易探云服务器均选择当下热门线路,比如CN2 GIA、BGP线路、CN2线路等,所有云主机支持月付,并且首月优惠,年付优惠,优惠后香港沙田云服务器/独立ip/香港CN2线路,每月仅18元,188元/年。点击进入:易探云官方网站地址1、香港...
			         
			       
				  
			     
							   
			      
			        
			          
			          虎跃科技怎么样?虎跃科技(虎跃云)是一家成立于2017年的国内专业服务商,专业主营云服务器和独立服务器(物理机)高防机房有着高端华为T级清洗能力,目前产品地区有:山东,江苏,浙江等多地区云服务器和独立服务器,今天虎跃云给大家带来了优惠活动,为了更好的促销,枣庄高防BGP服务器最高配置16核32G仅需550元/月,有需要的小伙伴可以来看看哦!产品可以支持24H无条件退款(活动产品退款请以活动规则为准...
			         
			       
				  
			     
							
			   
			   
hash sum mismatch为你推荐
	flash控件一台电脑要装哪几个flash插件ioeIOE是什么意思在线课堂老师怎么在线授课?空白代码空白名字代码溢出隐藏overflow:hidden是什么意思?拓扑关系什么是空间数据的拓扑关系备忘录模式Java中常用的设计模式有哪些?请详细说明一下工厂模式。editplus破解版DBTools Manager Professional 破解版在哪里可以下载?spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?smartupload为什么使用smartupload执行上传保存操作时用这句smart.save("upload")失败用smart.save("/upload")成功
华众虚拟主机管理系统 长沙域名注册公司 北京vps 漂亮qq空间 winscp arvixe z.com 韩国加速器 密码泄露 12u机柜尺寸 2017年黑色星期五 警告本网站 彩虹ip ibox官网 有益网络 免费个人空间 me空间社区 新家坡 共享主机 1g空间 更多