串其实也是线性结构,只是串的内容必须是字符,所以他又有他的不同的应用,最常见的应该是串的模式匹配,
下面就来说说模式匹配中的BF算法,其实就是一个一个向后面匹配,如果没有成功,那么回到主串刚开始的字符后面一个字符开始新的一次匹配,之后重复这个操作,如果匹配成功,那么返回第一个字符的位置,如果不成功,那么返回0,
1.串的定义
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef struct
{
char ch[MaxSize + 1];
int length;
}String;
2.BF算法
int indexBF(String S,String T,int pos)
{
int i = pos;
int j = 1;
while (i<=S.length&&j<=T.length)
{
if (S.ch[i]==T.ch[j])
{
i++;
j++;
}
else
{
i = i - j + 2;
j = 1;
}
}
if (j>T.length)
{
return i - T.length;
}
else
{
return 0;
}
}
好了,我们下回见,peace