直接上代码复制代码代码如下:#define_CRT_SECURE_NO_WARNINGS#include#include#include#defineMAX_SIZE255下面是小编为大家整理的c语言中关于使用BF(范例推荐),供大家参考。
直接上代码
复制代码 代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#define MAX_SIZE 255 //定义字符串的最大长度
typedef unsigned char SString[MAX_SIZE];//数组第一个保存长度
//BF
int BFMatchchar *s,char *p
int i,j;
i=0;
whilei < strlens
j=0;
whiles[i]==p[j]&&j < strlenp
i++;
j++;
ifj==strlenp
return i-strlenp;
i=i-j+1; //指针i回溯
return -1;
//getNetx
void getNextchar *p,int *next
int j,k;
next[0]=-1;
j=0;
k=-1;
whilej < strlenp-1
ifk==-1||p[j]==p[k] //匹配的情况下,p[j]==p[k]
j++;
k++;
next[j]=k;
else
//p[j]!=p[k]
k=next[k];
//KMP
int KMPMatchchar *s,char *p
int next[100];
int i,j;
i=0;
j=0;
getNextp,next;
whilei < strlens
ifj==-1||s[i]==p[j]
i++;
j++;
else
j=next[j]; //消除了指针i的回溯
ifj==strlenp
return i-strlenp;
return -1;
int main
int a, b;
char s[MAX_SIZE], p[MAX_SIZE];
printf"请输入模式串:";
scanf"%s", &s;
printf"请输入子串:";
scanf"%s", &p;
a = BFMatchs, p;
b = KMPMatchs, p;
ifa != -1
printf"使用BF算法:%dn", a;
else
printf"未匹配n";
ifb != -1
printf"使用KMP算法:%dn", a;
else
printf"未匹配n";
system"pause";
结果
复制代码 代码如下:
请输入模式串:lalalalalaaaa
请输入子串:lalaa
使用BF算法:6
使用KMP算法:6
请按任意键继续. . .
推荐访问:语言 BF c语言中关于使用BF c语言中关于使用BF c语言的使用 c语言的用法 关于C语言