串其實也是線性結構,隻是串的内容必須是字元,是以他又有他的不同的應用,最常見的應該是串的模式比對,
下面就來說說模式比對中的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