资源简介

最简洁的KMP算法




资源截图

代码片段和文件信息

#include 
#include 
#include 

#define ERROR 0
#define TRUE 1;

int InitData(char **sourcechar **targetint **value)
{
char ch;
int i=0;
(*source)=(char*)malloc(sizeof(char)*100);
(*target)=(char*)malloc(sizeof(char)*100);
(*value)=(int*)malloc(sizeof(int)*100);

if(!(*source)||!(*target)||!(*value))
return ERROR;

printf(“请输入源字符串,以#结束:\n“);

while((ch=getchar())!=‘#‘)
{
(*source)[i++]=ch;
(*source)[i]=‘\0‘;

}

getchar(); //抵消缓冲

i=0; //重置

printf(“请输入要匹配的字符串,以#结束:\n“);

while((ch=getchar())!=‘#‘)
{
(*target)[i++]=ch;
(*target)[i]=‘\0‘;

}

//初始化Value数组
for(i=0;i<100;i++)
{
(*value)[i]=0;

}

return TRUE;

}
//得出target中的匹配值
int GetValue(char *targetint *value)
{
char *head*tail;
int temp;
//ABCDABD
//ABCDAB


int i=1j=0;

head=(char*)malloc(sizeof(char)*100);
tail=(char*)malloc(sizeof(char)*100);
if(!head||!tail)
return ERROR;

for(i=1;i {
j=0;
while(target[j]!=‘\0‘)//复制到临时数组
{
head[j]=target[j];
tail[j]=target[j];

j++;

head[j]=‘\0‘;
tail[j]=‘\0‘;

}
head[i]=‘\0‘;
tail[i+1]=‘\0‘;

评论

共有 条评论