顺序表的插入,我老是输出error,得不到结果,不知道为什么

#include<stdio.h>
#define MaxSize 100

typedef int ElemType;

typedef struct
{
int t[MaxSize];
int length;
}sqlist;

int InterList(sqlist*L,int i,int x ) {
int j;
if (i < 0 || i > L->length+1) {
return (0);
}
for( j=L->length;j >i; j--)//i指插入点
{
L->t[i]=x;
L->length++;
}
return 1;

}
int DeleteElem(sqlist* L,int i,int e) {
if (i<1 || i>L->length + 1) {
return (0);
}
int j;
i--;//把i逻辑顺序换算成物理顺序
e = L->t[i];
for (j = i; j < L->length; i++) {
L->t[j] = L->t[j + 1];

}
 L->length++;
 return 1;

}

int main() {
int b, c, k = 0;
int d;//==插入点
sqlist a;
char Y;
int z = 1;
while (z)
{
printf("输出元素否:y/n\n");
scanf_s("%c", &Y);
if (Y == 'y') {
printf("输入元素%d\n", k + 1);
scanf_s("%d", &a.t[k]);
k++;
}

    else
    {
        z = 0;
        a.length = k;
    }
       

}
printf("请输入插入前元素:\n");

for (k=0;k<a.length;k++)
{
    printf("%d\t", a.t[k]);
}
printf("请输入插入位置元素\n");
scanf_s("%d", &d);
printf("请输入插入元素\n");
scanf_s("%d",&b);
c = InterList(&a,d,b);
if (c==0)
{
    printf("error!\n");
}
else
{    printf("请输入插入后的元素\n");
    for (k = 0; k < a.length; k++) {
        printf("%d\t",a.t[k]);
    }
}

return 0;

}

你这个d输入的是多少?输出error,说明插入函数返回0,返回0只有i输入的值是错误情况才发生


#include<stdio.h>
#define MaxSize 100

typedef int ElemType;

typedef struct
{
    int t[MaxSize];
    int length;
}sqlist;

int InterList(sqlist*L, int i, int x) {
    int j;
    if (i < 0 || i > L->length + 1) {
        return (0);
    }
    for (j = L->length; j >i; j--)//i指插入点
    {
        L->t[i] = x;
        L->length++;
    }
    return 1;

}
int DeleteElem(sqlist* L, int i, int e) {
    if (i<1 || i>L->length + 1) {
        return (0);
    }
    int j;
    i--;//把i逻辑顺序换算成物理顺序
    e = L->t[i];
    for (j = i; j < L->length; i++) {
        L->t[j] = L->t[j + 1];

    }
    L->length++;
    return 1;
}

int main() {
    int b, c, k = 0;
    int d;//==插入点
    sqlist a;
    char Y;
    int z = 1;
    while (z)
    {
        printf("输出元素否:y/n\n");
        scanf_s("%c", &Y);
        getchar();
        if (Y == 'y') {
            printf("输入元素%d\n", k + 1);
            scanf_s("%d", &a.t[k]);
            getchar();
            k++;
        }

        else
        {
            z = 0;
            a.length = k;
        }


    }
    printf("请输入插入前元素:\n");

    for (k = 0; k<a.length; k++)
    {
        printf("%d\t", a.t[k]);
    }
    printf("请输入插入位置元素\n");
    scanf_s("%d", &d);
    printf("请输入插入元素\n");
    scanf_s("%d", &b);
    c = InterList(&a, d, b);
    if (c == 0)
    {
        printf("error!\n");
    }
    else
    {
        printf("请输入插入后的元素\n");
        for (k = 0; k < a.length; k++) {
            printf("%d\t", a.t[k]);
        }
    }

    return 0;
}