将上面的数据利用长度为15的哈希表存储,输出存储后的哈希表。哈希函数采用key%13,用线性探测再散列解决冲突,设计并实现查找运算。
代码:
#include <bits/stdc++.h>
using namespace std;
const int MAXN=15;
typedef struct HashList{
int elem[MAXN],mod;
HashList(){
for(int i=0;i<MAXN;i++) elem[i]=-1;
mod=13;
}
public:
int Insert(int x){
int pos=x%mod;
while(elem[pos]!=-1) pos=(pos+1)%mod;
elem[pos]=x;
return pos;
}
void show(){
for(int i=0;i<mod;i++)
cout<<elem[i]<<' ';
cout<<endl;
}
int Find(int x){
int pos=x%mod;
while(elem[pos]!=x) pos=(pos+1)%mod;
elem[pos]=x;
return pos;
}
}HashList;
int main()
{
srand((unsigned long long)time(0));
int a[10]={90 ,92 ,41 ,2 ,4 ,29 ,73 ,87 ,11 ,77};
HashList b;
for(int i=0;i<10;i++){
b.Insert(a[i]);
b.show();
}
cout<<a[3]<<' '<<b.Find(a[3])<<endl;
}