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