【使用Hash表实现英文单词表并实现单词查询操作:给定单词查-查字典问答网
分类选择

来自黄健青的问题

  【使用Hash表实现英文单词表并实现单词查询操作:给定单词查询其英文翻译:(1)构造用于存放英文单词表的散列表结构:定义Hash函数;使用开散列法处理冲突;(2)英文单词表在附件文】

  使用Hash表实现英文单词表并实现单词查询操作:

  给定单词查询其英文翻译:

  (1)构造用于存放英文单词表的散列表结构:定义Hash函数;使

  用开散列法处理冲突;

  (2)英文单词表在附件文本中,从文件读入,一行一条.每一行

  前半部分为英文单词本身,后半部分为中文翻译,两部分之间用tab字

  符隔开(’t’).注意英文单词中可能有空格;

  提供用户单词查询操作:根据输入的英文单词,给出对应的中文翻译.

  操作平台:VC6.0

  英文单词表的txt文件格式如下:

  Swimming游泳

  swimmingpool游泳池

  changingroom更衣室

  shower淋浴

  spaningplatform跳台

  ten-meterplatform10米跳台

  five-meterplatform5米跳台

  three-meterspringboard3米跳板

  one-meterspringboard1米跳板

  spaningpool跳水池

  non-swimmer'spool浅水池

  swimmer'spool深水池

  startingblock出发台

  startingspane出发起跳

  ropewithcorkfloats水线

  swimminglane泳道

  touchingthefinishingline终点触线

  timekeeper计时员

  lifesaver救生员

  landdrill陆上练习

  breaststroke蛙泳

  crawlstroke爬泳

  backstroke仰泳

  sidestroke侧泳

  butterflystroke蝶泳

  dolphinbutterflystroke海豚式蝶泳

  treadingwater踩水

  underwaterswimming潜泳

  swimmingpoolwithartificialwaves人工海浪泳池

  artificialwaves人工海浪

  swimmingtrunks泳裤

  swimsuit泳衣

  swimmingcap泳帽

  bikini比基尼泳衣

  bikinibottom比基尼式泳裤

  surfing冲浪

  surfboard冲浪板

  waterski滑水橇

  请帮忙写出完整的代码,这个对我来说实在太复杂了,所以只能找高人求教了.

1回答
2020-07-23 15:10
我要回答
请先登录
蔡秀云

  #include

  #include

  #include

  #defineN100//散列表长度

  structNode

  {

  char*key;char*val;

  Node*next;

  }*heads[N];//散列表,用链处理冲突

  inthash(char*key)//散列函数

  {

  unsignedlongh=0;

  while(*key)

  {

  h=(h24;

  h&=~g;

  }

  returnh&N;

  }

  Node*find(char*key)//查找

  {

  Node*cur=heads[hash(key)];

  while(cur)

  {

  if(!strcmp(cur->key,key))

  returncur;

  cur=cur->next;

  }

  returnNULL;

  }

  voidinsert(char*key,char*val)//插入

  {

  inti=hash(key);

  Node*head=heads[i];

  if(find(key)==NULL)

  {

  Node*tmp=(Node*)malloc(sizeof(Node));

  tmp->key=(char*)malloc(strlen(key)+1);

  tmp->val=(char*)malloc(strlen(val)+1);

  strcpy(tmp->key,key);

  strcpy(tmp->val,val);

  tmp->next=head;

  heads[i]=tmp;

  }

  }

  main()

  {

  chartmp[100],*key,*val;

  Node*cur;

  FILE*fp=fopen("abc.txt","r");

  if(fp==NULL)

  {

  printf("打开文件有问题n");

  exit(1);

  }

  while(fgets(tmp,100,fp)!=NULL)

  {

  if(tmp[strlen(tmp)-1]=='n')

  tmp[strlen(tmp)-1]='';

  key=strtok(tmp,"t");

  val=strtok(NULL,"t");

  insert(key,val);

  }

  printf("输入你要查找的单词:n");

  while(gets(tmp))

  {

  cur=find(tmp);

  if(cur==NULL)

  printf("没找到n");

  else

  printf("%sn",cur->val);

  }

  }

2020-07-23 15:11:53

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •