Hash开散列 拉链法

来源:互联网 发布:淘宝客服会遇到的问题 编辑:程序博客网 时间:2024/04/28 23:42



#include<iostream>#include<cstdio>using namespace std;const int maxn=1000007;struct node{__int64 real;int sum;node *next;}myhash[maxn];int get_hash(__int64 real){int hash;hash=real%maxn;if(hash<0)hash+=maxn;node *p=&myhash[hash];while(1){if(p->sum==0){p->real=real;p->sum=1;return p->sum;}elseif(p->real==real){p->sum++;return p->sum;}if(p->next==NULL)break;p=p->next;}p->next=new node;p=p->next;p->real=real;p->sum=1;p->next=NULL;return p->sum;}int main(){ int n; int i;__int64 real;scanf("%d",&n);memset(myhash,0,sizeof(myhash));for(i=1;i<=n;i++){scanf("%I64d",&real);printf("%d\n",get_hash(real));}return 0;}


0 0
原创粉丝点击