电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

使用KMP算法实现一个模式匹配

使用KMP算法实现一个模式匹配_第1页
使用KMP算法实现一个模式匹配_第2页
使用KMP算法实现一个模式匹配_第3页
课程设计——数据结构 设计题目: KMP 算法实现一个模式匹配 指导老师:徐浩 学生: 文莉 班级 : 信 122 班 学号 : 129084227 2024 年 6 月 16 日一、问题描述:使用 KMP 算法实现一个模式匹配用 C/C++编写一个程序实现模式匹配的 KMP 算法。要求在一个字符串中搜索某个子串,若搜索到就返回子串的位置;若未搜索到,就返回 0。 首先要输入个主串和模式串,先根据 next( )函数求模式串的 next 值,利用 KMP 算法进行匹配,再用输出函数输出结果!二、设计思路:该算法分为五三个模块:第一模块[input( )函数](利用该函数输入主串和模式串的值);第二模块[StrLength()](利用该函数求各串的长度);第三模块[get_next( )函数](利用该函数求出模式串的 next 函数值);第四模块[Index_KM()函数](利用该函数进行主串和模式串之间的匹配); 第五模块[output( )函数利用该函数输出匹配结果)。个模块之间的调用关系如下图所示:图 4.1 是对整个函数的流程图。图4.2 是对 KMP 算法的流程图;图 4.3 是求 next 的函数值的流程图。开始结束用intput( )输入串输出长度m,nnext( )函数值StrLength( )get_next( )i++; j++;next[i-1]=j;i=lti-lt+10输出匹配结果调用output ( )YNNYYNYNY因水平有限,最终程序清单与这个流程图不同的地方,请谅解。大致思路是一致、、、三、数据结构定义:#define MAXSIZE 100;int index_KMP(char *s,char *t,int pos); void get_next(char *t,int *); 用最简单的数组进行 KMP 模式匹配主串:char s[10]="abcacbabb"; 模式串:char t[4]="cac"; int next[4]; int pos=0; 四、系统功能介绍:求模式串的模式值 next[]函数用《模式匹配的 KMP 算法》当主串和模式串匹配不相等是,模式串应向右移动一段距离,此时我们需要得到模式串的 next 函数值。 如何求 next 函数,next 函数值仅取决于模式本身而和主串无关。我们可以从分析 next 函数的定义出发用递推的方法求得 next 函数值。由定义知:next[1]=0 设 next[j]=k,即有:"t1 t2 … tk-1 " ="tj-k+1 tj-k+2 … tj-1 next[j+1]=? 可能有两种情况:一种情况:若 tk =tj 则表明在模式串中这就是说...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

文森传品+ 关注
实名认证
内容提供者

一家传播文化教育的小店,资料丰富,随意挑选。

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部