新版数据结构课程设计样本_第1页
新版数据结构课程设计样本_第2页
新版数据结构课程设计样本_第3页
新版数据结构课程设计样本_第4页
新版数据结构课程设计样本_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据构造》课程设计报告书题目:文本文献单词检索与计数专业:网络工程学号:学生姓名:张钦昆指引教师:王初阳完毕日期:/6/7目录TOC\o"1-3"\h\u单词 个数\n"); for(i=0;i<sq.length;i++) {x=strlen(et[i].word); for(w=x-1;w>=0;w--) if(et[i].word[w]<65||(et[i].word[w]>90&&et[i].word[w]<97)||et[i].word[w]>122) { et[i].word[w]=''; } for(w=0;w<x;w++) if(et[i].word[w]=='') y++; if(y==x) { et[i].count=0; y=0; } elsey=0; if(et[i].count!=0) printf("%20s%10d\n",et[i].word,et[i].count); elseq++; } j=sqlist_count(&sq,et);printf("\n%s单词总数为%d个\n",file_name,j); printf("\n%s非单词个数为%d种\n",file_name,q); printf("\n");} intpartposition(strings1,strings2,intk) { inti,j; i=k-1;/*扫描s1下标,由于c中数组下标是从0开始,串中序号相差1*/ j=0;/*扫描s2开始下标*/ while(i<s1.length&&j<s2.length) { if(s1.ch[i]==s2.ch[j]) { i++;j++;/*继续使下标移向下一种字符位置*/ } else { i=i-j+1;j=0; } } if(j>=s2.length) returni-s2.length;/*表达s1中存在s2,返回其起始位置*/ else return-1;/*表达s1中不存在s2,返回-1*/ }/*函数结束*/ voidsubstrcount() { FILE*fp; strings,t;/*定义两个串变量*/ charfname[10];inti=0,j,k; printf("输入文本文献名:"); scanf("%s",fname); fp=fopen(fname,"r"); printf("输入要记录计数单词:"); scanf("%s",t.ch); t.length=strlen(t.ch); while(!feof(fp)) { memset(s.ch,'\0',110); fgets(s.ch,110,fp); s.length=strlen(s.ch); k=0;/*初始化开始检索位置*/ while(k<s.length-1)/*检索整个主串S*/ { j=partposition(s,t,k);/*调用串匹配函数*/ if(j<0)break; else { i++;/*单词计数器加1*/k=j+t.length;/*继续下一字串检索*/ } } } printf("\n单词%s在文本文献%s中共浮现%d次\n",t.ch,fname,i);/*记录单词浮现个数*/ } voidsubstrint() { FILE*fp; strings,t;/*定义两个串变量*/ charfname[10]; inti,j,k,l,m; intwz[20];/*存储一行中字串匹配各种位置*/ printf("输入文本文献名:"); scanf("%s",fname); fp=fopen(fname,"r"); printf("输入要检索单词:"); scanf("%s",t.ch); t.length=strlen(t.ch); l=0;/*行计数器置0*/ while(!feof(fp))/*扫描整个文本文献*/ { memset(s.ch,'\0',110); fgets(s.ch,110,fp); s.length=strlen(s.ch); l++;/*行计数器自增1*/ k=0;/*初始化开始检索位置*/ i=0;/*初始化单词计数器*/ while(k<s.length-1)/*检索整个主串S*/ { j=partposition(s,t,k);/*调用串匹配函数*/ if(j<0)break; else { i++;/*单词计数器加1*/ wz[i]=j;/*记录匹配单词位置*/ k=j+t.length;/*继续下一字串检索*/ } } if(i>0) { printf("行号:%d,次数:%d,位置分别为:",l,i); for(m=1;m<=i;m++) printf("第%4d个字符",wz[m]+1); } printf("\n"); } printf("\n本软件自定义110个字节为一行\n\n"); }/*检索单词出当前文本文献中行号、次数及其位置*/ voidsubstrio() { voidsubstrcount(),substrint(); chart; while(1) { printf("===============================================\n"); printf("请输入:"); printf("||文本文献单词字串定位记录及定位||\n"); printf("||===================================||\n"); printf("||a.单词浮现次数||\n"); printf("||||\n"); printf("||||\n"); printf("||b.单词浮现位置||\n"); printf("||||\n"); printf("====================================\n"); scanf("%c",&t); switch(t) { case'a':substrcount(); break; case'b':substrint(); break; default:return; } } } intmain() { voidcreat_text_file(),substrsum(),substrio(); intxz; while(1) { printf("===============================================\n"); printf("||文本文献检索、字串记录及定位||\n"); printf("||===========================================||\n"); printf("||1.建立文本文献||\n"); printf("||2.单词字串计数||\n"); printf("||3.单词字串定位||\n"); printf("||4.退出整个程序||\n"); printf("===============================================\n"); printf("请选取(1--4)\n"); scanf("%d",&xz); switch(xz) { case1:creat_text_file(); break; case2:substrsum(); break; case3:substrio(); break; case4:return0; default:printf("选取错误,重新选\n"); } } return0; }4调试分析4.1问题分析与回顾问题1:在语句“请输入一行文本”后边,只写一句接受语句,成果运营时,请输入文本和结束输入吗?演示在一起,并且不能接受文本输入。解决:和同窗讨论后,加入了文本接受语句,成功运营。问题2:当要检索文本时,输入为空,或输入非建立文本文献名,系统不能正常运营。分析:缺少判断语句。解决:当浮现这种状况时,系统提示输入错误,请重新输入。4.2算法时空分析拟定给定单词浮现个数,需要记录文本文献中所有单词,因而时间复杂度为O(n);拟定给定单词浮现位置,需要显示其所在行和列,时间复杂度为O(i*l);4.3算法改进此算法虽然基本实现了功能,但却仍存在许多局限性,例如当当前建立文献名与之前相似时,没有错误提示,另如在对单词检索方面,时间复杂度及空间复杂度仍不尽如人意。仍需要改进代码,达到算法高效性。4.4经验和体会通过本次数据构造课程设计,让我对数据构造这门课有了更加深刻结识。数据构造这门课程理论性只是较强,要学好这门课程,就必要在掌握好理论知识同步,加强上机操作,遇到问题,解决问题,这样才会有更大进步。我课程设计题目是文献文本检索与计数,由于这个课题要用到串知识。而我对之前对串定义却不是很明确,于是我有详细学习了课本上知识并查阅了诸多文献。在着手作程序过程中,经常遇到程序运营不出来,运营达不到效果等问题,特别是接受文本,搜索时如何定位等方面遇到了诸多问题。但我通过请教教师和同窗,查阅文献,然后基本上解决了这些问题。在这个过程中我学到了诸多,我结识到了坚持不懈重要性,在我一遍一遍调试下,终于成功写出了程序。在编写本次程序时,我学会了先用流程图对进行算法分析,这样是自己思路更加清晰,而不是像之前那样对整个函数没有整体认知,而导致经常无从下手。之前我对数据构造各种算法都感到畏惧,感觉很抽象,而这次通过自己几周努力,在教师和同窗们协助下,终于完毕了本次课程设计,这对我来说无疑是极大鼓舞,极大增强了我学数据构造自信心。并且我也充分结识到数据构造自身就是一门实践性很强课程,只有加强实践,才干学得更好!5测试成果输入建立文献名如图5所示为输入建立文献测试图5输入建立文献测试输入一行文本测试如图6所示建立一行文本,建立文献结束界面。图6建立文献结束测试(3) 单词字串计数测试如图7,单词字串计数测试界面。图7单词字串计数测试(4)单词字串定位测试如图8和图9所示。图8单词字串定位测试图9单词字串定位测试(5)程序结束退出,如图10所示图10程序结束退出参照文献[1]严蔚敏,吴伟民.数据构造(C语言版).北京:清华大学出版社,.[2]蒋清明,向德生.C语言程序设计.北京:人民邮电出版社,.[3]尹德淳,龙脉工作室.C函数速查手册.北京:人民邮电出版社,.[4]闵敏,朱辉生.《数据构造》.高等教诲

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论