C语言中KMP算法的实现

C语言中KMP算法的代码实现

#include
#include
#define MAXSTRLEN 255

void get_next(char *T,int *next)
{
	int i=1,j=0;
    next[1]=0;
    while(iT[0])	return i-T[0]; 
	else return 0;
}


void caculate(char *S,char *T)
{
	int pos;
	printf("which position you want begin:");
	scanf("%d",&pos);
	int index;
	int next[20];

	printf("================ kMP ==============\n");

    get_next(T,next);	
    index=kMP(S,T,pos,next);

	if(index)printf("index=%d\n",index);
	else printf("null\n");
}

void input(char *S,char *T)
{	
	printf("enter char in main string:");
	scanf("%s",S+1);
	S[0]=strlen(S+1);
	fflush(stdin);
	printf("enter char in substring:");
	scanf("%s",T+1);
	T[0]=strlen(T+1);
	caculate(S,T);
}

void set_variable()
{
	char Str[MAXSTRLEN+1];
	char Stp[MAXSTRLEN+1];
	input(Str,Stp);
}
void main()
{set_variable();}

这是在自己做课设的时候写的KMP算法,后面的设置变量可以做适当的修改。

你可能感兴趣的:(算法)