文学研究助手数据结构报告

文学研究助手数据结构报告

ID:28064829

大小:293.90 KB

页数:13页

时间:2018-12-07

文学研究助手数据结构报告_第1页
文学研究助手数据结构报告_第2页
文学研究助手数据结构报告_第3页
文学研究助手数据结构报告_第4页
文学研究助手数据结构报告_第5页
资源描述:

《文学研究助手数据结构报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、学号武汉理工大学华夏学院课程设计课程名称数据结构题目文学研究助手日月年业级名绩专班姓成文学研究助手设计目的(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。(2)使学生掌握数据库设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。(3)使学生学会使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。问题描述文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个实现这一目标的文字统计系统,称为“文学研究助手”。基本要求

2、英文小说存于一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。算法思想本次课程设计使用的足串模式匹配的KMP算法,模式匹配算法KMP为齊通模式匹配的改进,优点在与时间复杂度由原来的0(n*in)变为0(n+m),即是说统计时间大大缩短。当要统计的词汇量很大时,计算机统计所需时间将很漫长,如果使用者急需使用统计结果,这是乂因为统计太慢导致研究受阻,这样就得不偿失了。而本程序将大大改善这种状况,让计算机在短时间内统计

3、出使用者想要的统计结果。本程序虽然精简,但是对模式匹配算法KMP的使用极其灵活,需灵活调用模式匹配算法KMP的函数来快速解决问题。该算法的核心思想足:每当一趟匹配过程屮出现字符比较不等时,不需要回测指针,而是利用已经得到的“部分匹配”的结果将模式向右滑动烬町能远的一段距离后,继续进行比较。模块划分本次课程设计所用到的程序主要包含四个模块,分别是主程序模块、有序表準元模块、单词单元模块和单词文本串文件单元模块。其屮主程序模块需要实现的功能是,输入文本并统计文件中每个需要测试的单词出现的次数和位置,并输出结果。源程序Sinclu

4、deSincludeSdefineMAXSTRLEN255//最大串长typedefcharSString[MAXSTRLEN+l];intnext[MAXSTRLEN];//KMP算法中用到的nextintIndex(SStringS,SStringT,intpos)//KMP算法!inti=pos,j=l;while(i<=S[0]&&j<=T[0])!if(j==O

5、

6、S[i]==T[j]){++i;++j;}elsej=next[j];}if(j〉T[O])return(i~T[

7、0]);elsereturn0;intlenth(SStringstr)//求率松inti=l;while(str[i])i++;return(i~l);}voidfind(charname[],SStringkeys)//查找函数{SStringtext;//用于存放从小说文件读取的一行字符串inti=l,j=0,k,q=0;//i用于存放行号,j用于存放列号,k用于输岀格式的控制,q用于统计出现次数FILE*fp;if(!(fp=(fopen(name,〃r〃))))//打开小说文件{printf("打开文件出错!"

8、);exit(0);}keys[0]=lenth(keys);//求关键字的长度printf(〃%s〃,&keys[l]);//打印关键字while(!feof(fp))//如果还没到小说文件末尾,则继续循环{k=0;fgets(&text[l],MAXSTRLEN,fp);//从小说文件中读取一行字符串,存入text串中j=Index(text,keys,j+1);//调用KMP算法,统计关键字在该行出现的位置,若匹配不成功则返冋0if(j!=0){printf("行=%d,列,",i,j);k++;}//若匹配成

9、功则打印行号和列号while(j!=0)//若该行找到了关键字,则继续寻找看是否还能匹配成功{j=Index(text,keys,j+1);//调用KMP算法从刚找到的列号后一字符起匹配if(j!=0){printf(",%d",j);k++;}//若匹配成功,贝1J打印列号}i++;//行号加1,在下一行中寻找q+=k;//累加k以统计关键字出现次数if(k)printf("");//输出格式控制}printf(〃%s出现%d次。〃,&keys[l],q);//打印关键字出现次数}voidmain(){charna

10、me[50];//存储输入的小说路径字符串SStringwords[10];//定义字符率数组,用于存储输入的关键字intm,n,i;printf(〃欢迎使用文学研究助手//打印标题while(1)//不停循环,直至完成查询或者退出服务printf("是否需要为你服务:需要输入1,不需要输

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

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

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