#include <bits/stdc++.h>
using namespace std;
int Hash(int num,int p)
{
int k;
k = num % p;
return k;
}
int main()
{
int n,p;
while(cin>>n>>p)
{
int i,a[2000],num,k;
memset(a,-1,sizeof(a));
for(i = 0; i <= n - 1; i++)
{
cin>>num;
k = Hash(num,p);
if(a[k] == -1)
{
a[k] = num;
}
else
{
if(a[k] != num)//在k位置上虽然存了数字,但是数字和进来的数字不同
{
int l = k,cnt = 1;
while(a[l] != -1)
{
l = Hash(k + cnt,p);
cnt++;
if(a[l] == num)
{
break;
}
}
k = l;
a[k] = num;
}
}
if(i == 0)
{
cout<<k;
}
else
{
cout<<" "<<k;
}
}
cout<<endl;
}
return 0;
}
数据结构实验之查找七:线性之哈希表
最新推荐文章于 2020-12-08 16:50:06 发布