KMP算法中的next数组问题
#include <stdio.h>#include <stdlib.h>
#include <string.h>
typedef struct
{
char *str;
int MaxSize;
int Length;
}Dstring;
void GetNext(Dstring T,int next[])
{
int j=1,k=0;
next=-1;
next=0;
while(j<T.Length-1)
{
if(T.str==T.str)
{
next=k+1;
j++;
k++;
}
else if(k==0)
{
next=0;
j++;
}
else k=next;
}
}
int main()
{
int next[]={0};
int i;
Dstring T={"abcabcaaa",9,9};
GetNext(T,next);
for(i=0;i<T.Length;i++)
printf("%d\t",next);
printf("%d",next);
return 0;
}
一个问题,这里我的next已经赋值为0,运行时next却与i的数值一样进行变化。输出前两项为-1,1,最后一项是9. 找到问题了,这里不对主函数里的数组赋值为{0}输出正常,但不是太理解为什么这样只影响到了next {:10_257:} xiaozhangxuexi 发表于 2020-8-19 20:38
找到问题了,这里不对主函数里的数组赋值为{0}输出正常,但不是太理解为什么这样只影响到了next
真神奇{:10_277:} int next[]={0};
next=-1;
next=0; //这里不会越界吗?
页:
[1]