哈希函数 英语单词_用Hash Table(哈希散列表)实现统计文本每个单词重复次数(频率)...

本文介绍了如何利用哈希散列表统计文本文件中每个单词的重复次数。通过哈希函数将单词映射到小于29989的整数,采用链地址法解决冲突,实现了一个简单的单词计数程序。程序包括哈希函数定义、数据结构、插入单词、读取和写入结果文件等步骤。
摘要由CSDN通过智能技术生成

哈希表在查找方面有非常大应用价值,本文记录一下利用哈希散列表来统计文本文件中每个单词出现的重复次数,这个需求当然用NLP技术也很容易实现。

一、基本介绍

1、Hash Key值:将每个单词按照字母组成通过一个乘子循环运算得出一个小于29989的整数,29989是一个比较大的质数。0~29989即为Key值。

2、哈希函数:

1 //哈希函数

2 unsigned int hashIndex(const char* pWord) //返回hash表的索引(即hash指针数组的下标)

3 {4 assert(pWord !=NULL);5 unsigned int index = 0; //以下四行为将一个单词映射到一个小于HASHNUMBER的正整数的函数

6 for (; *pWord != '\0'; pWord++)7 index = MULT * index + *pWord;8 return index %HASHNUMBER;9 }

View Code

3、数据结构定义:

(1)总体采用数组法,数组下标就是Key值,Key取值范围是1~29989,也即数组大小为29989,数组的每个项存储该Key值下含有的单词链表的头指针,根据头指针就能遍历整个单词链表

hashNodePtr bin[HASHNUMBER] = { NULL }; //HASHNUMBER大小的指针数组 作为hash表

(2)单词节点定义:   链表存储同一Key值下的单词ÿ

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值