2(2)
设目标为t = “abcaabbabcabaacbacba",模式串为p = ”abcabaa“。
1⃣️ 计算模式p的nextval函数值;
#include <stdio.h>
#include <string.h>
#define MAXLEN 255
typedef struct{
char ch[MAXLEN];
int length;
}SString;
void get_nextval(SString t,int nextval[]);
int index_KMP(SString s,SString t,int *nextval);
int main() {
SString s,t;
strcpy(s.ch,"#abcaabbabcabaacbacba");
strcpy(t.ch,"#abcabaa");
s.length = strlen(s.ch)-1;
t.length = strlen(t.ch)-1;
int nextVal[t.length+1];
get_nextval(t,nextVal);
int loc = index_KMP(s,t,nextVal);
printf("%d",loc);
return 0;
}
void get_nextval(SString t,int nextval[]){
int i = 1,j = 0;
nextval[1] = 0;
while(i < t.length){
if(j == 0 || t.ch[i] == t.ch[j]){
i++;j++;
if(t.ch[i]!=t.ch[j]){