欢迎来到天天文库
浏览记录
ID:1331416
大小:290.50 KB
页数:15页
时间:2017-11-10
《数据结构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(
此文档下载收益归作者所有