/**
* 实验题目:
* 实现顺序串的各种模式匹配算法
* 实验内容:
* 实现顺序串的各种模式匹配运算
* 1、建立目标串s="abcabcdabcdeabcdefabcdefg"和模式串t="abcdeabcdefab"
* 2、采用简单匹配算法求t在s中的位置
* 3、由模式串t求出next值和nextval值
* 4、采用KMP算法(字符串查找算法)求t在s中的位置
* 5、采用改进的KMP算法求t在s中的位置
*/
#include <stdio.h>
#include <string.h>
#define MaxSize 100
typedef struct
{
char data[MaxSize]; // 定义可容纳MaxSize个字符的空间
int length; // 标记当前实际串长
}SqString;
/*---------------------------简单匹配算法-------------------------------*/
int Index(SqString s, SqString t)
{
int i = 0;
int j = 0;
int k;
while((i < s.length) && (j < t.length))
{
if(s.data[i] == t.data[j]) // 继续匹配下一个字符
{
i++;
j++;
}
else // 主串/子串指针回溯重新开始下一次匹配
{
i = i - j + 1;
j = 0;
}
}
if(j >= t.length) // 返回匹配的第一个字符的下标
k = i - t.length;
else