POJ 2503 - 字符串哈希

来源:互联网 发布:量子光学 知乎 编辑:程序博客网 时间:2024/06/05 12:02

1.Question:

简单的字符串哈希的题目
引用拉链法处理冲突

2.Code:

#include"iostream"#include"cstring"#include"cstdlib"#include"cstdio"#define N 100003using namespace std;typedef struct node{char english[15];char foreign[15];struct node* next;}point;point data[N];int elfhash(char* str){unsigned long hash=0;unsigned long x=0;while(*str){hash=(hash<<4)+(*str++);if((x=hash&0xF0000000L)!=0){hash^=(x>>24);}hash&=~x;}return hash%N;}int main(){char ppp[30];char s1[12];char s2[12];memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));while(gets(ppp) && ppp[0]!='\0'){sscanf(ppp,"%s %s",s1,s2);int key=elfhash(s2);point* k=new point;memset(k,0,sizeof(k));strcpy(k->english,s1);strcpy(k->foreign,s2);k->next=data[key].next;data[key].next=k;memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));}while(gets(ppp)){int key=elfhash(ppp);point* k=data[key].next;if(k==NULL) printf("eh\n");else{while(k!=NULL){if(strcmp(k->foreign,ppp)==0){//while(1);printf("%s\n",k->english);break;} k=k->next;} }memset(ppp,0,sizeof(ppp));}return 0;}

3.怪异:

本题中,我们引用拉链法去处理冲突,但是我和网上大部分的代码都是一样的用ELFhash去做,但是很是奇怪,我一直是WA,求解WA的原因

0 0