数据结构实验之查找五:平方之哈希表

来源:互联网 发布:smtp默认端口 编辑:程序博客网 时间:2024/05/23 01:57
//哈希表:建立元素与数组下标的联系#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;}

阅读全文
0 0
原创粉丝点击