| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求数据,一直wa谁帮我看一下是怎么回事#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxn 100003
typedef struct THashTable
{
char en[12];
char dia[12];
THashTable* next;
}HashTable;
HashTable* hash[maxn];
int ELFhash(char *k)//经典的字符串哈希
{
unsigned long h=0,g;
while(*k)
{
h=(h<<4)+*k++;
g=h&0xf0000000L;
if(g)
h^=g>>24;
h&=~g;
}
return h%maxn;
}
void insert(char* te,char* td)
{
int h=ELFhash(td);
if(!hash[h])
{
HashTable* temp=(HashTable*) malloc(sizeof(HashTable));
strcpy(temp->en,te);
strcpy(temp->dia,td);
temp->next=0;
hash[h]=temp;
}
else
{
HashTable* temp=hash[h];
temp->next=(HashTable*) malloc(sizeof(HashTable));
temp->next->next=0;
strcpy(temp->next->en,te);
strcpy(temp->next->dia,td);
}
}
void find(char* temStr)
{
int h=ELFhash(temStr);
HashTable* temp=hash[h];
while(temp)
{
if(strcmp(temp->dia,temStr)==0)
{
printf("%s\n",temp->en);
return;
}
temp=temp->next;
}
printf("en\n");
}
int main()
{
memset(hash,0,sizeof(hash));
char english[12];
char dialog[12];
char t;
while(1)
{
t=getchar();
if(t=='\n') break;
english[0]=t;
t=getchar();
if(t==' ')
{
scanf("%s",dialog);
english[1]='\0';
}
else{
english[1]=t;
scanf("%s %s",english+2,dialog);
}
getchar();//以防敲下的回车被下次的t吸收
insert(english,dialog);
}
char temStr[12];
while(scanf("%s",temStr)!=EOF)
{
find(temStr);
getchar();
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator