首页 > 代码库 > 模式匹配—KMP算法中Next值求解
模式匹配—KMP算法中Next值求解
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct { char *ch; int length; }HString; void StrAssign(HString &T,char chars[]); int get_next(HString T,int next[]); void main() { HString T; char chars[80]; int i,n,next[80]; printf("Please input the string:"); gets(chars); StrAssign(T,chars); n=get_next(T,next); for(i=1;i<=n;i++) printf("%d",next[i]); printf("\n"); } void StrAssign(HString &T,char chars[]) { char c[80]; int i,j,k; for(k=0;*chars;k++,chars++) c[k]=*chars; for(i=0;i<k;i++); if(!i) { T.ch=NULL; T.length=0; } else { if(!(T.ch=(char *)malloc(i*sizeof(char)))) { printf("ERROR!\n"); return; } for(j=1;j<=i;j++) T.ch[j]=c[j-1]; T.length=i; } } int get_next(HString T,int next[]) { int i=1,j=0,count=1; next[1]=0; while(i<T.length) { if(j==0||T.ch[i]==T.ch[j]) { i++; j++; next[i]=j; count++; } else j=next[j]; } return count; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。