西瓜小刚 发表于 2018-11-4 15:59:43

关于 KMP求next数组的问题

为啥运行 不出来哪里出问题啦还请 朋友们 帮帮忙 看看帮忙指正一下谢谢啦
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
        char *ch;
        int length;
}str;

void getnext(str T,int *next)
{
        int j = 0, i = 1;
        next = 1;
        while(i<T.length)
        {
                if(j == 0 || T.ch == T.ch)
                        {
                                next = j+1;
                                i++;
                                j++;
                       
                        }
                        else
                                j = next;
        }
}

int main()
{
        str s;
        char z = "ababaaaba";
        s.length = 9;
        s.ch = (char *)malloc((s.length+1)*sizeof(char));

   
        for(int j=0;j<10;j++)
               s.ch=z;
        //printf("%s \n",s.ch);


        int next;
        int i =1;
        getnext(s,next);

        free(s.ch);
       
        for(i;i<=s.length;i++)
        {
                printf("%d ",next);
        }
        putchar('\n');
        return 0;
}

beijudezixuan 发表于 2018-11-5 20:22:50

在getnext函数中 i的值从1开始,那么下面给next赋值,就相当于从Next开始赋值,Next的值不被赋予,它的值将是混乱的

西瓜小刚 发表于 2018-11-6 09:25:45

beijudezixuan 发表于 2018-11-5 20:22
在getnext函数中 i的值从1开始,那么下面给next赋值,就相当于从Next开始赋值,Next的值不被赋予,它 ...

谢谢 朋友不过问题 不是 在这 char z = "ababaaaba";   写成 char z = " ababaaaba";就行了就样就 与 next 数组对齐
页: [1]
查看完整版本: 关于 KMP求next数组的问题