diff --git a/串/KMP.c b/串/KMP.c new file mode 100644 index 0000000..9b69670 --- /dev/null +++ b/串/KMP.c @@ -0,0 +1,68 @@ +#include +#include +#include +#define MAXLEN 255 + +typedef struct{ + char ch[MAXLEN]; + int length; +}SString; + +//输入字符串 +void assign(SString *S){ + int i = 1; + char x; + scanf("%c",&x); + while(x!='\n'){ + S->ch[i++] = x; + scanf("%c",&x); + } + S->length = i-1; +} +//打印字符串 +void print(SString S){ + for(int i=1;i<=S.length;i++){ + printf("%c",S.ch[i]); + } + printf("\n"); +} +//求next数组 +void getNext(SString S,int *next){ + next[1] = 0; + int i = 1,j = 0; + while(iT.length){ + return i-T.length; + }else{ + return 0; + } +} +int main(){ + SString S,T; + printf("请输入主串:\n"); + assign(&S); + printf("请输入模式串:\n"); + assign(&T); + printf("匹配到的位置:%d",KMP(S,T)); + return 0; +}