#include<iostream>
#include<cstring>
using namespace std;
#define MAXSIZE 255
#define OVERFLOW -2
typedef struct{
char *ch;
int length;
}SString;
//初始化
int Init(SString &S){
S.ch=new char[MAXSIZE];
if(!S.ch) return OVERFLOW;
S.length=0;
return 1;
}
//串赋值
void StrAssign(SString &S,char c[]){
S.ch[0]=strlen(c);
for(int i=1;i<=strlen(c);i++){
S.ch[i]=c[i-1];
S.length++;
}
}
int Index_BF(SString S,SString T){
int i=1,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;
}
int main(){
SString S,T;
Init(S);Init(T);
char s[]="aaaaab";
char t[]="aaab";
StrAssign(S,s);
StrAssign(T,t);
int num=Index_BF(S,T);
cout<<"返回值为:"<<num<<endl;
return 0;
}
运行结果 :