实验目的:
在代码实践中熟悉散列查找流程,熟悉C语言文件操作,提高写代码能力。
预期效果:
读取指定文件,第一行输出有效单词数量,接下来每一行使用“单词:,词频:”格式化输出所有统计到的单词与词频。
实验思路:
使用移位+取余法构造哈希函数,使用链接法解决地址冲突,采用散列查找思想。
实验代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXWORDLENGTH 12
#define HASHTABLESIZE 1000
#define DOCNAME "test.txt"
typedef struct HNode *HashNode;
struct HNode {
char *word;
int count;
HashNode next;
};
typedef HashNode HashTable[HASHTABLESIZE];
/* 在指定链中查找单词 */
HashNode findWord (HashNode hN, char *word) {
while (hN!=NULL) {
if (strcmp(hN->word,word)==0) {
return hN;
}
hN = hN->next;
}
return NULL;
}
/* 找到指定链的尾部 */
HashNode findTail (HashNode hN) {
while (hN!=NULL) {
hN = hN->next;
}
return hN;
}
/* 从文件中获取单词函数实现 */
char *readWord(FILE *fp) {
char *ret;
ret = (char *)malloc((MAXWORDLENGTH+1)*sizeof(char));

该代码实践旨在通过C语言实现散列查找,使用移位+取余法构造哈希函数并用链接法解决冲突。程序读取指定文件,统计单词词频,输出有效单词数量及每个单词的词频。
最低0.47元/天 解锁文章
9435

被折叠的 条评论
为什么被折叠?



