为什么我没法删除呢,我感觉我的输入没错啊

#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||L->length==MaxSize) //
return (0);

i--;//将顺序表逻辑序号转化为物理序号
for( j=L->length;j >i; j--)//i指插入点
    L->t[j] = L->t[j - 1];//将数据t[i]及后面的元素后移一个位置
     L->t[i]=x;//插入x
    L->length++;//顺序表的长度增1

return 1;

}

int DeleteElem(sqlist* L,int i) {
if (i< 0|| i>L->length + 1||L->length==MaxSize)
return (0);
int j;
i--;//把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]);
k++;
getchar();

    }
        
    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]);
    }
}
printf("请输入删除位置\n");
scanf_s("%d", &d);
c= DeleteElem(&a, d);
if (c==0)
{
    printf("error!");
}
else
{
    printf("请输入删除元素\n");
    for (size_t k = 0; k <a.length; k++)
    {
      printf(" %d\t", a.t[k]);
    } 
}


return 0;

}

一看到这样的代码块,就失去看下去的兴趣