串:KMP算法

 

//KMP算法(包括改进KMP算法)
#define MAXLEN 25
#include
#include
typedef struct{
	char ch[MAXLEN];//ch[0]不用,从ch[1]开始存,位序与下标相等,能存24个数据元素 
	int length;
}SString;

void get_next(SString T,int next[]){//求next数组 
	int i=1,j=0;//next[i]=j
	next[1]=0;//特别地,next[1]=0
	while(iT.length)return i-T.length;//匹配成功 
	return 0;//匹配失败 
}

int main(){
	char* ss="googlegoogle";
	char* tt="abaabcaba";
	
	SString S,T;
	//init
	for(int i=1;i<13;i++){
		S.ch[i]=ss[i-1];
	}
	S.length=12;
	for(int i=1;i<10;i++){
		T.ch[i]=tt[i-1];
	}
	T.length=9;
	
	int next[9];
	get_next(T,next);
	
	for(int i=1;i<=9;i++)
		printf("%d ",next[i]);
		
	return 0;
}

 

你可能感兴趣的:(算法/数据结构,KMP)