简介:本作业聚焦于深入理解哈希表这一高效数据结构,涵盖其设计原理、冲突解决策略及性能分析,旨在提升学生在实际问题中的应用能力。
数据结构第16次作业:Hash表拼写检查
**先修条件**
学生应掌握以下先决技能:
- 哈希表的概念及递归函数的理解。
- 继承 - 通过专业化增强现有数据结构。
**目标**
本作业旨在巩固学生对哈希表作为可搜索容器使用方法的理解。
**成果**
成功完成此作业的学生将掌握如下内容:
- 熟悉如何使用哈希表,特别是哈希集的用法。
背景
任何文字处理软件通常都包含拼写检查功能。该功能不仅指出潜在错词,还建议可能的修正选项。
**描述**
本次评估需要完成一个拼写检查程序。以下是程序运行时的一个截图:
- 程序开始会打开由命令行参数指定的一份单词列表文本段落件。如果无法打开所指明的单词列表文本段落件,则输出错误信息并终止。
- 成功打开所述的单词列表后,该程序将每个词存储到哈希表中。
- 接下来,程序根据用户通过命令行提供的输入来打开一个需要拼写检查的文件。
- 打开此文件后,程序会比较其中每一个词汇与储存在哈希表中的单词。如果某个词在哈希表里不存在,则被视作错词,并显示该错误字出现的位置以及可能的修正建议列表。
**任务**
为了完成此次评估,你需要实现类Dictionary并完善main.cpp中拼写检查程序的部分代码。
- 完成HashSet类定义:此类提供三个处理哈希集的功能函数(搜索、插入和移除),这些函数接受一个单一的关键字引用作为参数。注意使用eq成员进行关键字比较,并考虑冲突解决策略及哈希表的大小。
- 接下来,完成Dictionary类的构造器实现,该构造器接收单个字符串参数为单词列表文本段落件名,并将其中所有词放入字典中。
- 完成hash_function方法在dictionary.h中的定义。
- 最后完善check_spelling函数。此函数已经包含逐行读取文件及使用stringstream实例从每一行提取每个词汇的代码,你需要检查每一个词语的拼写是否正确。通过Dictionary类继承来的搜索功能来判断一个词是否存在字典中;如果存在,则认为该单词是正确的;若不存在则视为错词,并生成和显示可能修正建议列表。
**提交**
- hashset.cpp - 你完成的HashSet定义。
- dictionary.h - 你完成的Dictionary定义
- dictionary.cpp(如有创建)
- main.cpp - 完成后的拼写检查程序。