数据结构 串BF模式匹配算法作业

题目要求
键盘输入目标串(主串)s、模式串(子串)t,编写程序,实现顺序串的BF模式匹配算法。要求:匹配成功,输出位序,匹配不成功,显示相应提示信息。
例如:s=“aaaabcdcccc”,t=“abcd”。
因为程序很简单,所以就直接亮出完整代码,后续会发布一个串的一系列操作

完整代码

#include <stdio.h>
#define Max 200
 
typedef struct
 {
	 char data[Max];
	 int length;
 }Sqstring;

char str1[Max];
char str2[Max];

void Strassign(Sqstring &s,char str[])
{
	int i;
	for(i=0;str[i]!='\0';i++)
		s.data[i]=str[i];
	s.length=i;
}

int index(Sqstring s,Sqstring t)
{
	int i=0,j=0;
	while(i<s.length&&j<t.length)
	{
		if(s.data[i]==t.data[j])
		{
			i++;
			j++;
		}
		else
		{
			i=i-j+1;
			j=0;
		}
	}
	if(j>=t.length)
		return (i-t.length);
	else
		return -1;
}

int main()
{
	Sqstring s1,s2;
	printf("请输入第一个字符串\n");
	scanf("%s",str1);
	Strassign(s1,str1);
	printf("请输入第二个字符串\n");
	scanf("%s",str2);
	Strassign(s2,str2);
	if(index(s1,s2)==-1)
		printf("匹配不成功\n");
	else
		printf("匹配的第一个字符的下标为:%d\n",index(s1,s2));
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43349548/article/details/106406469