注册 登录
编程论坛 数据结构与算法

词组 检索

糊涂无罪 发布于 2013-01-16 22:08, 525 次点击
(1)将所有的英文单词生成一个字典Dictionary。(必须采用字符串哈希,hash散列算法)
(2)给定一个单词,判断这个单词是否在字典Dictionary中。如果在单词库中,输出这个单词总共出现的次数。否则输出NO。
(3)输出Dictionary中出现次数最高的10个单词。(必须采用快速排序或堆排序算法)
本题本人只会用哈夫曼编码做 求大神指点 用哈希怎么做
4 回复
#2
yuccn2013-01-17 00:12
哈夫曼编码 主要用于数据的压缩吧,也用于做字典?
没有玩过些字典,同求学习
#3
azzbcc2013-01-19 17:29
这种问题,用 C语言感觉。。。

哈希表嘛,也就是个关键字问题和冲突处理啊,看你大概有多少个单词了,我是想着 用开头两个字母作关键字,一共就 26 * 26 个空,再加上拉链法解决冲突(期间最好是

依字典序排序插入,以后查找会方便,当然,你们蛋疼的作业不让在这排序,所以直接头插法方便)
程序代码:
typedef struct word
{
    int n;    //出现次数
    char str[30];
    struct word *next;
}node, *qnode;

typedef qnode Dictionary[26 * 26];
#4
yaobao2013-01-20 22:37
KK
#5
pangding2013-01-22 08:42
可以考虑用字头几个字母做哈希,也可以考虑其它办法。
用字头几个字母做索引的缺点在于过于不均匀,比如 xx 可能就根本没以有单词,但像 ab, de, re 之类的又可能单词太多。

有人专门研究过字串上的哈希算法,各有各的优势,楼主可以自己找点资料看看,一搜有很多:
http://
http://wenku.baidu.com/view/b2c64ded172ded630b1cb60d.html
1