数据结构c++版课程设计报告

数据结构c++版课程设计报告

ID:1331416

大小:290.50 KB

页数:15页

时间:2017-11-10

数据结构c++版课程设计报告_第1页
数据结构c++版课程设计报告_第2页
数据结构c++版课程设计报告_第3页
数据结构c++版课程设计报告_第4页
数据结构c++版课程设计报告_第5页
资源描述:

《数据结构c++版课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构课程设计报告姓名:学号:专业:联系电话:Email:15目录报告一拼写检测器31.实验题目32.问题描述33.概要设计34.详细设计45.测试结果及分析66.源代码815报告一拼写检测器1.实验题目拼写检测器(Spellerchecker)2.问题描述1.loadthewordsinthedictionaryfile(加载字典文件)2.readthetextfiletobechecked(读取被检测文件)3.lookupeachwordfromthetextfileinthedictionary(逐个单词的检测其拼写)4.printoutthemisspelledwords

2、inalphabeticalorderwiththeirlinenumbers.(按字典顺序打印出错误的单词及其行号)例如某被检测文件内容如下:显然第二行的laanguage和第六行的ammong拼写错误,输出应该:ammong6laanguage23.概要设计(1)字典存储结构选择15由于所有的单词的长短不一,单词中字母重复的部分很多,如果用数组存储字典的话很浪费空间,所以考虑用树存储字典,相同部分只存储一次,每一棵树只存储相同字母开头的所有单词,从上往下,依次存储,孩子的脚标与字母对应(0-25号树的树根分别存放A-Z,26-51号树的树根分别存放a-z,其孩子也是一样)。(1

3、)树的ADT定义:ADTDTree{数据对象:D={ai

4、ai属于ElemSet,i=1,2,……,nn>=0}数据关系:若D为空集,则树为空;若紧含一个数据元素,则数据关系为空,否则:1.D中仅有一个称为跟(root)的数据元素,关系R没有前驱。2.除根结点外,其余结点划分m个互不相交的子集,对任意的子集Di,属于R。基本操作:InitTree(&T);//建立空树DestroyTree(&T);//销毁树Root(T);//求树跟Insert(&T,x);//将元素x插入树中Chile(T,x,i);//求x结点的第i个孩子}ADTDTree(2)排序存储结构

5、选择若选用数组,排序的时间复杂度很高,其单词长短不一,选用链表。(3)链表抽象数据定义ADTLinkList{数据对象:D={ai

6、ai属于ElemSet,i=1,2,……,nn>=0}数据关系:R={

7、ai-1,ai属于D,i=1,2,……,nn>=0}基本操作:Init(&L);//构造一个空链表InsertInOrder(&L,x);//将元素插入有序表中使之仍然有序DisPlay();//输出结点信息}ADTLinkList;(4)其他函数1)主函数main()。2)建字典函数CreateDTree()。3)检测拼写函数Checkspell()。1.详细设

8、计树存储字典,每个单词的字母是一个结点,而链表存放单词及行号,用WordsLine结构体单词及行号,定义结点类ListNode、链表类LinkList、树结点类DTreeNode、树类DTree。(1)StuctstructWordsLine{//结点类,存放错误的单词及其行号stringword;15intLineNumber;};(1)链表结点类classListNode//结点类定义{friendclassLinkList;//声明链表类LinkList为友元类private:WordsLinedata;//结点的数据域ListNode*next;//结点的后继指针域,存放后

9、继结点的地址public:ListNode();//构造函数ListNode(constWordsLinee):data(e),next(NULL){}//构造函数WordsLine&GetData(){returndata;}//返回结点的数据值ListNode*GetNext(){returnnext;}//返回结点的指针值voidSetData(WordsLine&e){data=e;}//设置结点的数据值voidSetNext(ListNode*ptr){next=ptr;}//设置结点的指针值voidDisPlay();//输出结点的信息};(2)链表类classLink

10、List//链表类定义{friendclassListNode;private:ListNode*head;//链表的头指针public:LinkList(){head=newListNode();}//构造函数,建立带头结点的空链表LinkList(WordsLine&e){head=newListNode(e);}//构造函数~LinkList(){LinkListClear();deletehead;}//析构函数,删除单链表voidLinkListClear(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。