📄 开放地址法.txt
字号:
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#define num1 10
#define num2 20
#define num3 400
class Chazhao
{
int hashlist[num2],a[num1],d,i;
public:
Chazhao();
int hash(int);
void constructlist();
void search();
void display();
};
Chazhao::Chazhao()
{
srand(int ( time(0) ) );
for(i=0;i<num1;i++)
a[i]=rand()%100;
for(i=0;i<num2;i++)//在没有插入数据时hash数组中的值全为-1
hashlist[i]=num3;
cout<<"输出a数组!\n";
for(i=0;i<num1;i++)
{
cout<<a[i]<<" ";
if((i+1)%5==0)
cout<<endl;
}
}
int Chazhao::hash(int a)
{
return a%num2;
}
void Chazhao::constructlist()
{
int flag=0;
for(i=0;i<num1;i++)
{
d=hash(a[i]);
if(hashlist[d]==num3)
{
hashlist[d]=a[i];
cout<<"插入成功!\n";
flag=1;
}
else
{
int temp=d;
d=(d+1)%num2;
while(d!=temp)
{
if(hashlist[d]==num3)
{
hashlist[d]=a[i];
cout<<"插入成功!\n";
break;
}
else
{
if(hashlist[d]==a[i])
{
flag=1;
cout<<"此数据已存在!\n";
break;
}
else
d=(d+1)%num2;
}
}
}
if(!flag)
cout<<"插入失败!\n";
}
}
void Chazhao::search()
{
int number,flag=0;
cout<<"请输入要查找的数据是:";
cin>>number;
d=hash(number);
if(hashlist[d]==number)
{
cout<<endl<<"所找元素位置为:"<<d+1<<endl;
flag=1;
}
else
{
int temp=d;
d=(d+1)%num2;
while(d!=temp)
{
if(hashlist[d]==number)
{
cout<<endl<<"所找元素位置为:"<<d+1<<endl;
flag=1;
break;
}
else
d=(d+1)%num2;
}
}
if(!flag)
cout<<endl<<"没有你要查找的元素!\n";
}
void Chazhao::display()
{
cout<<endl<<"散列表为:\n";
for(i=0;i<num2;i++)
{
cout<<hashlist[i]<<" ";
if((i+1)%5==0)
cout<<endl;
}
cout<<endl;
}
void main()
{
Chazhao pl;
pl.constructlist();
pl.search();
pl.display();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -