数据结构--KMP算法C语言实现

#include
#include
typedef struct
{
	char *ch;
	int length;
}Str;

//串赋值操作
int strassign(Str& str,char *ch){
	//求ch串的长度
	int len=0;
	char *c=ch;
	while(*c){
		++len;
		++c;
	}
	if(len==0){
		str.ch=NULL;
		str.length=0;
		return 1;
	}
	else
	{
	str.ch=(char*)malloc(sizeof(char)*(len+1));//len+1为了多分配一个空间存放"\0"
	if(str.ch==NULL){
		return 0;
	}else{
		c=ch;
		for(int i=0;i<=len;i++,++c)// <=是为了将ch最后的\0一起复制到str中
			str.ch[i]=*c;
		str.length=len;
		return 1;
	}
	}
}
	
//简单匹配模式
int index(Str str,Str substr){
	int i=0,j=0,k=i;	//k成功匹配时记录i开始的位置
	while(i= substr.length)
	{	
		return k;
	}else
		return 0;
}


//KMP
int KMP(Str str,Str substr,int next[]){
	int i=0,j=0;	
	while(i= substr.length)
	{	
		return i-substr.length+1;
	}else
		return 0;
}

//求next数组
void getnext(Str substr,int next[]){
	
	int i=0,j=-1;
	next[0]=-1;
	while(i0?"简单模式匹配成功":"简单模式匹配失败";
	char *result2=KMP(str,substr,autonext)>0 ? "KMP匹配成功":"KMP匹配失败";
	printf("\n%s\n",result1);
 	printf("%s\n",result2);
	return 0;
}

结果:

数据结构--KMP算法C语言实现_第1张图片

你可能感兴趣的:(数据结构学习笔记)