实验三 串的模式匹配

上传人:kms****20 文档编号:40274179 上传时间:2018-05-25 格式:DOC 页数:6 大小:58.50KB
返回 下载 相关 举报
实验三 串的模式匹配_第1页
第1页 / 共6页
实验三 串的模式匹配_第2页
第2页 / 共6页
实验三 串的模式匹配_第3页
第3页 / 共6页
实验三 串的模式匹配_第4页
第4页 / 共6页
实验三 串的模式匹配_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实验三 串的模式匹配》由会员分享,可在线阅读,更多相关《实验三 串的模式匹配(6页珍藏版)》请在金锄头文库上搜索。

1、实验三实验三 串的模式匹配串的模式匹配一、一、 实验目的实验目的1 利用顺序结构存储串,并实现串的匹配算法。2 掌握简单模式匹配思想,熟悉 KMP 算法。二、二、 实验要求实验要求1认真理解简单模式匹配思想,高效实现简单模式匹配;2结合参考程序调试 KMP 算法,努力算法思想;3保存程序的运行结果,并结合程序进行分析。三、三、 实验内容实验内容1、通过键盘初始化目标串和模式串,通过简单模式匹配算法实现串的模式匹配,匹配成功后要求输出模式串在目标串中的位置;2、参考程序给出了两种不同形式的 next 数组的计算方法,请完善程序从键盘初始化一目标串并设计匹配算法完整调试 KMP 算法,并与简单模式

2、匹配算法进行比较。四、程序流程图、算法及运行结果四、程序流程图、算法及运行结果3-13-1 #include#include #include#include #define#define MAXSIZEMAXSIZE 100100intint StrIndex_BF(charStrIndex_BF(char sMAXSIZE,charsMAXSIZE,char tMAXSIZE)tMAXSIZE) intint i=1,j=1;i=1,j=1;whilewhile (it0)(jt0)returnreturn (i-t0);(i-t0);elseelsereturnreturn -1;-1;

3、 intint main()main() charchar sMAXSIZE;sMAXSIZE;charchar tMAXSIZE;tMAXSIZE;intint answer,answer, i;i; printf(“Sprintf(“S StringString nn “);“);gets(s);gets(s);printf(“Tprintf(“T StringString nn “);“);gets(t);gets(t);printf(“%d“,StrIndex_BF(s,t);printf(“%d“,StrIndex_BF(s,t); /*/*验证验证*/*/if(answer=Str

4、Index_BF(s,t)=0)if(answer=StrIndex_BF(s,t)=0) printf(“n“);printf(“n“);printf(“%sn“,printf(“%sn“, s);s);forfor (i(i = = 0;0; i i #include#include #define#define MAXSIZEMAXSIZE 100100voidvoid get_nextval(unsignedget_nextval(unsigned charchar pat,intpat,int nextval)nextval) intint lengthlength = = strl

5、en(pat);strlen(pat);intint i=1;i=1;intint j=0;j=0;nextval1=0;nextval1=0;while(ip_len)if(jp_len) returnreturn i-1-p_len;i-1-p_len;elseelse returnreturn -1;-1; intint main()main() unsignedunsigned charchar textMAXSIZE;textMAXSIZE;unsignedunsigned charchar patMAXSIZE;patMAXSIZE;intint nextvalMAXSIZE;ne

6、xtvalMAXSIZE;intint answer,answer, i;i; printf(“nBoyer-Mooreprintf(“nBoyer-Moore StringString SearchingSearching Program“);Program“);printf(“n=“);printf(“n=“);printf(“nnTextprintf(“nnText StringString “);“);gets(text);gets(text);printf(printf( “nPattern“nPattern StringString “);“);gets(pat);gets(pat

7、);get_nextval(pat,nextval);get_nextval(pat,nextval);if(answer=Index_KMP(text,if(answer=Index_KMP(text, pat,nextval)=0)pat,nextval)=0) printf(“n“);printf(“n“);printf(“%sn“,printf(“%sn“, text);text);forfor (i(i = = 0;0; i i =1(j=1 nextj;i+;i+; j+;j+;if(ti=tj)if(ti=tj) nextinexti = = nextj;nextj; elsee

8、lse nextinexti = = j;j; voidvoid main()main() charchar *p=“abcaababc“;*p=“abcaababc“;intint i,str10;i,str10;GetNext1(p,str);GetNext1(p,str);printf(“Putprintf(“Put out:n“);out:n“);for(i=1;i10;i+)for(i=1;i10;i+)printf(“%d“,stri);printf(“%d“,stri);GetNext2(p,str);GetNext2(p,str);printf(“n“);printf(“n“);for(i=1;i10;i+)for(i=1;i10;i+)printf(“%d“,stri);printf(“%d“,stri);printf(“n“);printf(“n“);getch();getch();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号