#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#define OK 1
#define ERROR 0
#define Sizemax 200
#define Status int
using namespace std;
typedef struct
{
char *ch;
int Length;
}SString;
Status InSString(SString &S,SString &T)
{
S.ch = new char [Sizemax];
T.ch = new char[Sizemax];
S.Length =Sizemax;
T.Length = Sizemax;
return OK;
}
Status shuru(SString& S,SString &T)
{
char* p;//新建指针p使其指向数组的第二位
p = (char*)malloc(sizeof(char));
p = S.ch;
p++;
scanf_s("%s",p,Sizemax-1);//第三个参数为输入字符的最大长度
printf("S字符串输入完毕\n");
p = T.ch;
p++;
scanf_s("%s", p, Sizemax - 1);
printf("T字符串输入完毕\n");
S.Length = strlen(S.ch)-1;
printf("字符串S共存了:%d位数\n",S.Length);
T.Length = strlen(T.ch)-1;
printf("字符串T共存了:%d位数\n",T.Length);
return OK;
}
Status Display(SString S,SString T)
{
char* m;
m = S.ch;
m++;
printf("S字符串为:%s\n",m);
m = T.ch;
m++;
printf("T字符串为:%s\n",m);
return OK;
}
Status BF(SString S, SString T)
{
int i, j;
i = j = 1;
while (j <=T.Length && i <= S.Length)
{
if (S.ch[i] == T.ch[j])
{
i++;
j++;
}
else { i = i - j + 2; j = 1; }
}
if (j >T.Length)
printf("匹配成功!\n位置为:%d\n", i - j+1);
else printf("匹配失败,不存在匹配\n");
return OK;
}
int main()
{
SString S, T;
InSString(S, T);
shuru(S,T);
Display(S, T);
BF(S,T);
}
BF算法详细代码
最新推荐文章于 2021-11-30 11:27:44 发布