1 / 3
文档名称:

模式匹配算法..doc

格式:doc   大小:25KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

模式匹配算法..doc

上传人:q1188830 2019/10/19 文件大小:25 KB

下载得到文件列表

模式匹配算法..doc

文档介绍

文档介绍:/***时间:2010年8月26日7:09:57*功能:模式匹配算法代码*/#include""#include""voidkmp(int*ikmp,char*t,intt_length){intk=0;intq=0;ikmp[0]=k;for(q=1;q<t_length;q++){while(k>0&&t[k]!=t[q]){k=ikmp[k];}if(t[k]==t[q]){k=k+1;}ikmp[q]=k;}/*测试*/for(q=0;q<t_length;q++){printf("ikmp[%d]is%d\n",q,ikmp[q]);}}intkmps(char*s,char*t){ints_length=0;intt_length=0;intk=0;intq=0;int*ikmp=NULL;/*求出s_length与t_length的值*/while(s[s_length]!='\0'){s_length++;}/*测试*/printf("s_lengthis%d\n",s_length);while(t[t_length]!='\0'){t_length++;}/*测试*/printf("t_lengthis%d\n",t_length);/*求t的kmp值*/ikmp=malloc(t_length*sizeof(int));kmp(ikmp,t,t_length);/*匹配过程*/for(q=0;q<s_length;q++){while(k>0&&t[k]!=s[q]){k=ikmp[k-1];}if(t[k]==s[q]){k=k+1;}if(k==t_length){free(ikmp);return(q-t_length+1);}}free(ikmp);return-1;}main(){inti=0;char*s;/*主串*/char*t;/*匹配串*/printf("inputs:");scanf("%s",s);printf("inputt:");scanf("%s",t);/*数组下标从0开始*/i=kmps(s,t)+1;printf("%sisat%din%s",t,i,s);getch();}