数据结构实验之查找七:线性之哈希表

来源:互联网 发布:vb net从入门到精通 编辑:程序博客网 时间:2024/06/15 00:35
#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;}

原创粉丝点击