⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 哈希查找.cpp

📁 共有10个文件代码
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
#define M 11
#define N 8
struct hterm
{
	int key; //关键字值
	int si;  //散列次数
};
struct hterm hlist[M];
int  i,adr,sum,d;
int x[N]={22,41,53,46,30,13,1,67};//关键字赋值
float average;
void chash()//创建哈希表
{
	for(i=0;i<M;i++)  //置初值
	{
		hlist[i].key=0;
		hlist[i].si=0;
	}
	for(i=0;i<M;i++)
	{
		sum=0;
		adr=(3*x[i])%M ; //哈希函数
		d=adr;
		if(hlist[adr].key==0)
		{
			hlist[adr].key=x[i];
			hlist[adr].si=1;
		}
		else
		{
			do   //采用“开放地址法”处理冲突 
			{
				d=(d+(x[i]*7)%10+1)%M;
				sum=sum+1;
			}while(hlist[d].key!=0);
			hlist[d].key=x[i];
			hlist[d].si=sum+1;
		}
	}
}
void dhash() //输出哈希表
{
	cout<<"哈希表的地址 ";
	for(i=0;i<M;i++)
	  cout<<setw(4)<<i;
	cout<<endl;
	cout<<"哈希表关键字:";
	for(i=0;i<M;i++)
		cout<<setw(4)<<hlist[i].key;
	cout<<endl;
	cout<<"搜索长度:";
	for(i=0;i<M;i++)
		cout<<setw(4)<<hlist[i].si;
	cout<<endl;
	for(i=0;i<M;i++)
		average=average+hlist[i].si;
	average=average/N;
	cout<<"平均搜索长度:ASL("<< N <<")="<<average<<endl;
}
void main()
{
	chash();
	dhash();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -