1 #include <stdio.h>
2
3 #define MAXSTRLEN 255
4 typedef unsigned char SString[MAXSTRLEN + 1];
5
6 int Index_KMP(SString S, SString T, int pos, int next[])
7 {
8 int i, j;
9 while(i <= S[0] && j <= T[0])
10 {
11 if(j == 0 || S[i] == T[j])
12 {
13 ++i;
14 ++j;
15 }
16 else
17 j = next[j];
18 }
19 if(j > T[0])
20 return i - T[0];
21 else
22 return 0;
23 }
24
25 void get_next(SString T, int &next[])
26 {
27 int i, j;
28 i = 1;
29 next[1] = 0;
30 j = 0;
31 while(i < T[0])
32 {
33 if(j == 0 || T[i] == T[j])
34 {
35 ++i;