定义哈希表为H(key)=key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测在散列构建哈希表,并查找给定关键字。
#include<iostream>
using namespace std;
int main(){
int t,n,m,k,i,j,a,b;
cin>>t;
while(t--){
cin>>m>>n;
int *p=new int[m];
int *z=new int[m];
for(i=0;i<m;i++){
p[i]=0;
z[i]=0;
}
int x;
while(n--){
cin>>a;
i=a%11;
while(z[i]==1){
i=(i+1)%m;
}
p[i]=a;
z[i]=1;
}
for(i=0;i<m;i++){
if(p[i]!=0)
cout<<p[i];
else cout<<"NULL";
if(i<m-1)
cout<<" ";
else cout<<endl;
}
cin>>k;
int num,w,K;
while(k--){
num=0;
cin>>a;
i=a%11;
while(1){
if(p[i]==a){
K=1;
break;
}else if(p[i]==0){
K=0;
break;
}else ;
i++;
i=i%m;
num++;
}
if(K==1)
cout<<"1 "<<num+1<<" "<<i+1<<endl;
else cout<<"0 "<<num+1<<endl;
}
}
return 0;
}