xiaozhangxuexi 发表于 2020-8-19 20:33:12

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.

xiaozhangxuexi 发表于 2020-8-19 20:38:19

找到问题了,这里不对主函数里的数组赋值为{0}输出正常,但不是太理解为什么这样只影响到了next

小甲鱼的铁粉 发表于 2020-8-19 20:45:59

{:10_257:}

巴巴鲁 发表于 2020-8-20 12:02:49

xiaozhangxuexi 发表于 2020-8-19 20:38
找到问题了,这里不对主函数里的数组赋值为{0}输出正常,但不是太理解为什么这样只影响到了next

真神奇{:10_277:}

Cool_Breeze 发表于 2020-8-25 13:49:49

int next[]={0};
    next=-1;
    next=0; //这里不会越界吗?
页: [1]
查看完整版本: KMP算法中的next数组问题