编制kmp字符串匹配实验报告.doc_第1页
编制kmp字符串匹配实验报告.doc_第2页
编制kmp字符串匹配实验报告.doc_第3页
编制kmp字符串匹配实验报告.doc_第4页
全文预览已结束

下载本文档

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

文档简介

实验报告题目:编制字符串匹配的KMP算法班级:OOO 姓名:XXX 学号:ASDFGHJK 完成日期:20XX.XX.XX1、 需求分析1. 字符串匹配试求子串位置的定位函数,普通的字符串匹配函数时间复杂度较大达到了O(m*n),而KMP算法则可以将时间复杂度简化到O(m+n)。2. 本演示程序中,字符串的元素为除换行、退格等字符外的其他字符,字符串长度=MAXSIZE,字符串的输入的形式为string0储存长度,从string1开始存储字符,并以0做结束标志,字符串中字符顺序不限,且允许出现重复字符,不能出现非法字符。输入两个字符串后,输入一个整形数pos,pos=0数据关系:R1=|ai-1,aiD,i=1,2,.,n基本操作:GetString(SString &S)初始条件:存在串的指针。操作结果:生成一个由键盘键入的字符串S。strlen(SString S)初始条件:串S存在。操作结果:返回S的元素个数,称为串的长度。Index(SString S,SString T,int pos)初始条件:串S和T存在,T是非空串,1=posGetString()-strlenth() -index_KMP-get_next()3、 调试分析1. 在GetString()中开始用了gets(S),S0没有用来记录字符串的长度,导致在后续的程序中运算出错。2. next函数在某些情况下存在缺陷。例如模式aaaaa在和主串aaabaaaab匹配时,当i=4、j=4,时不匹配,需要进行多余的三次比较,实际上,因为模式中第1、2、3、个字符和第4个字符都相等,因此不再需要和主串中第四个字符进行比较,而可以将模式一气向右滑动4个字符的位置直接进行i=5、j=1时的字符比较。这就是说,若按上述定义得到nextj=k,而模式中pj=pk,则当主串中字符si和pj不比较不等时,不需要在和pk进行比较,而直接和pnextk进行比较,即此时的nextj应该和nextk相同。由此得到修正算法:void get_nextval(SString T,int nextval)四、测试结果1.S=abababab T=aba pos=1 :1;2.S=abababab T=aba pos=6 :0;五、附录源程序文件清单:#define MAXSTRLEN 255#include#include#includeint nextMAXSTRLEN+1,nextvalMAXSTRLEN+1;typedef char SStringMAXSTRLEN+1;int Index_KMP(SString S,SString T,int pos)int i,j=1;i=pos;while(i=S0&jT0)return i-T0;else return 0;void get_next(SString T,int next)int i=1,j;next1=0;j=0;while(iT0)if(j=0|Ti=Tj)+i;+j;nexti=j;else j=nextj;void get_nextval(SString T,int nextval)int i=1,j=0;nextval1=0;while(iT0)if(j=0|Ti=Tj)i+;j+;if(Ti!=Tj)nextvali=j;else nextvali=nextvalj;else j=nextvalj;void GetString(SString &S)gets(S+1);S0=strlen(S+1);int main()SString S,T;int pos;GetString(S);Get

温馨提示

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

评论

0/150

提交评论