数据结构中串操作求next方法错哪里了?
#include<stdio.h>//在数据结构的串操作——求一个字符串的next值#define max 10
int next(char s[],int a[]);
void main()
{
int i=1,j=0,k=1,a[max];
char s[max]={0},c[max];
printf("input string\n");
scanf("%s",s);
puts(s);
while(s[k]!='\0')//将字符串后移一个放到c里面
{
c[k]=s[k-1];
k++;
}
c[k]='#';//将c最后一位设置为#结束标志
next(c,a);//求一个字符串的next值
for(i=1;i<10;i++)
{
printf("%d ",a[i]);
}
}
int next(char s[],int a[])
{
int i=1,j=0;
while(s[i]!='#')
{
if(j==0||s[i]==s[j])
{
i++;j++;
a[i]=j;
}
else
{
j=a[j];
}
}
return 1;
}
怎么弄都是有一个空间不能饮用是不是哪里需要开辟一个新空间还是怎么弄