有关字符串的hash,用黑书上推荐的传说中的ELFhash函数

输入的话,用sscanf处理比較简洁

#include<iostream>
#include<cstring>
using namespace std;
#define M 9991
struct n1
{
char foreigh[11],english[11];
n1 *next;
};
n1 hash[M];
int ELFhash(char *key)
{
long long g,h=0;
while(*key)
{
h=(h<<4)+*key++;
g=h&0xf0000000L;
if(g)
h^=g>>24;
h&=~g;
}
return h%M;
}
void find(char *s)
{
n1 *p;
for(p=&hash[ELFhash(s)];p->next!=0;p=p->next)
if(strcmp(p->foreigh,s)==0)
{
printf("%s\n",p->english);
return;
}
printf("eh\n");
}
void insert(char *e,char *f)
{
n1 *p;
for(p=&hash[ELFhash(f)];p->next!=0;p=p->next);
strcpy(p->english,e);
strcpy(p->foreigh,f);
p->next=new(n1);
p->next->next=0;
}
void datain()
{
char tmp[22],english[11],foreigh[11];
while(gets(tmp)&&tmp[0])
{
sscanf(tmp,"%s %s",english,foreigh);
insert(english,foreigh);
}
}
void solve()
{
char foreigh[11];
memset(hash,0,sizeof(hash));
datain();
while(scanf("%s",foreigh)!=EOF)
find(foreigh);
}
int main()
{
solve();
}

最新文章

  1. $.each与$().each
  2. knockoutjs with绑定导致unobtrusive validation失效的问题
  3. selenium之xpath定位和input文本
  4. 58. N-Queens &amp;&amp; N-Queens II
  5. 转:桥接模式(Bridge)
  6. akw、grep、sed常用命令
  7. jsonp调用webapi和mvc
  8. issues about Facebook Login
  9. Linux 多线程通信
  10. 对Node.JS的事件轮询(Event Loop)的理解
  11. Omi教程-使用group-data通讯
  12. React Native 轻松集成分享功能(iOS 篇)
  13. Rstudio-server 重新登录载入session的问题
  14. PHP微信H5支付
  15. 【比赛】NOIP2018 赛道修建
  16. Type I and type II errors | 第一类错误和第二类错误
  17. React-Native组件之Text内文字垂直居中方案
  18. 前端面试问题html汇总
  19. CURLOPT_RETURNTRANSFER
  20. B/S FastReprot使用

热门文章

  1. U盘开发之SSD对比
  2. 让Maven正确处理javac警告
  3. Java魔法堂:打包知识点之META-INF/MAINFEST.MF(转)
  4. HDU2084 数塔 (DP入门题)
  5. poj 3255 求次大最短路
  6. ORACLE表空间管理方式segment和extent
  7. Database name和SID
  8. 蜗牛爱课- iOS中定时器NSTimer使用
  9. OleDbHelper
  10. JS 精粹(方法)