//哈希表:建立元素与数组下标的联系
#include <bits/stdc++.h>
using namespace std;
int cnt;
int Hash(int num,int p)
{
int k;
k = num % p;
return k;
}
int main()
{
ios::sync_with_stdio(false);
int n,p;
while(cin>>n>>p)
{
int a[550],i,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]那里之前就存了数字
{
int cnt = 0,j = 1;
int l = k;
while(a[l] != -1)
{
if(cnt % 2 == 0)
{
l = Hash(k + j * j,p);
}
else
{
l = Hash(k - j * j,p);
j++;
}
cnt++;
}
k = l;
a[k] = num;
}
else
{
a[k] = num;
}
if(i == 0)
{
cout<<k;
}
else
{
cout<<" "<<k;
}
}
cout<<endl;
}
return 0;
}
数据结构实验之查找五:平方之哈希表
最新推荐文章于 2022-05-24 09:43:35 发布