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

下载本文档

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

文档简介

数据结构课程设计数据结构课程设计/NUMPAGES47数据结构课程设计数据结构课程设计《数据结构》课程设计报告书题目:文本文件单词的检索与计数专业:网络工程学号:131007137学生姓名:张钦昆指导教师:王初阳完成日期:2014/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经验和体会通过本次数据结构的课程设计,让我对数据结构这门课有了更加深刻的认识。数据结构这门课程的理论性只是较强,要学好这门课程,就必要在掌握好理论知识的同时,加强上机操作,遇到问题,解决问题,这样才会有更大的进步。我课程设计的题目是文件文本的检索与计数,由于这个课题要用到串的知识。而我对之前对串的定义却不是很明确,于是我有详细的学习了课本上的知识并查阅了很多文献。在着手作

温馨提示

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

最新文档

评论

0/150

提交评论