#include <stdio.h>
#include<malloc.h>
#define MAXNUM
struct SeqString
{
char c[1000];
int n;
};
typedef struct SeqString SeqString ;
typedef struct SeqString *PSeqString;
int index(SeqString t,SeqString p)
{
int i=0,j=0;
while (i<p.n&&j<t.n)
{
if ( p.c[i] == t.c[j]) { i++; j++; }
else
{ j = j-i+1; i = 0; }
}
if ( i >= p.n)
return (j-p.n+1);
else
return 0;
}
int pMatch( SeqString t, SeqString p, int *next )
{ int i, j;
i = j = 0;
while ( i < p.n && j < t.n )
{
if (i == -1 || p.c[i] == t.c[j])
{ i++; j++; }
else i = next[i];
}
if ( i >= p.n)
return (j-p.n+1) ;
else
return 0;
}
makeNext2(SeqString p, int *next)
{
int i = 0, k = -1;
next[0] = -1;
while ( i < p.n-1 )
{
if ( k == -1 || p.c[i] == p.c[k])
{ i++; k++;
if ( p.c[i] != p.c[k])
next[i] = k;
else next[i] = next[k];
}
else k = next[k];
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。