数据结构8592KMP算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includestdio.h#includestdlib.h//#includeiostream.h#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASLBLE-1#defineOVERFLOW-2#defineMAXSTRLEN255//用户可在255以内定义最大串长typedefunsignedcharSString[MAXSTRLEN+1];//0号单元存放串的长度intnext[MAXSTRLEN];voidget_next(SStringT,intnext[]){inti=1,j=0;next[1]=0;while(iT[0]){if(j==0||T[i]==T[j]){++i;++j;next[i]=j;}elsej=next[j];}//算法4.7//求模式串T的next函数值并存入数组next//请补全代码}intIndex_KMP(SStringS,SStringT,intpos){inti=pos,j=1;while(i=S[0]&&j=T[0]){if(j==0||S[i]==T[j]){++i;++j;}elsej=next[j];}if(jT[0])returni-T[0];elsereturn0;//算法4.6//利用模式串T的next函数求T在主串S中第pos个字符之后的位置//KMP算法。请补全代码}intmain(){SStringT,S;inti,j,n;charch;intpos;scanf(%d,&n);//指定n对需进行模式匹配的字符串ch=getchar();for(j=1;j=n;j++){pos=1;ch=getchar();for(i=1;i=MAXSTRLEN&&(ch!='\n');i++)//录入主串{S[i]=ch;ch=getchar();}S[0]=i-1;//S[0]用于存储主串中字符个数ch=getchar();for(i=1;i=MAXSTRLEN&&(ch!='\n');i++)//录入模式串{T[i]=ch;ch=getchar();}T[0]=i-1;//T[0]用于存储模式串中字符个数get_next(T,next);pos=Index_KMP(S,T,pos);//请填空printf(%d\n,pos);}return0;}

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功