1、1 数据结构课程设计 报告 姓 名: 学 号: 专 业: 联系电话: E m a il: 2 目录目录 报告一 拼写检测器 3 1. 实验题目. 3 2. 问题描述. 3 3. 概要设计. 3 4. 详细设计. 4 5. 测试结果及分析 6 6. 源代码 8 3 报告一报告一 拼写检测器拼写检测器 1. 实验题目实验题目 拼写检测器(Speller checker) 2. 问题描述问题描述 1. load the words in the dictionary file(加载字典文件) 2 .read the text file to be checked (读取被检测文件) 3. look
2、up each word from the text file in the dictionary (逐个单词的检测其拼写) 4. print out the misspelled words in alphabetical order with their line numbers.(按字典顺序 打印出错误的单词及其行号)例如某被检测文件内容如下: 显然第二行的 laanguage 和第六行的 ammong 拼写错误,输出应该: ammong 6 laanguage 2 3. 概要设计概要设计 (1) 字典存储结构选择 由于所有的单词的长短不一,单词中字母重复的部分很多,如果用数组存储字 典
3、的话很浪费空间,所以考虑用树存储字典,相同部分只存储一次,每一棵树 只存储相同字母开头的所有单词,从上往下,依次存储,孩子的脚标与字母对 应(0-25 号树的树根分别存放 A-Z,26-51 号树的树根分别存放 a-z,其孩子也是 一样) 。 4 (2) 树的 ADT 定义: ADT DTree 数据对象:D=ai | | ai 属于 ElemSet,i=1,2,n n=0 数据关系:若 D 为空集,则树为空;若紧含一个数据元素,则数据关系为空,否则: 1. D 中仅有一个称为跟(root)的数据元素,关系 R 没有前驱。 2. 除根结点外, 其余结点划分 m 个互不相交的子集, 对任意的子集
4、 Di, 属于 R。 基本操作: InitTree( /建立空树 DestroyTree( /求树跟 Insert( int LineNumber; ; (2) 链表结点类 5 class ListNode /结点类定义 friend class LinkList; /声明链表类LinkList为友元类 private: WordsLine data; /结点的数据域 ListNode* next; /结点的后继指针域,存放后继结点的地址 public: ListNode();/构造函数 ListNode(const WordsLine e):data(e),next(NULL) /构造函数 WordsLine /返回结点的数据值 ListNode* GetNext()return next; /返回结点的指针值 void SetData(WordsLine /设置结点的数据值 void SetNext(Li