求指点,怎么改这个程序错误

img

img

img

代码修改如下,修改部分已标注,如有帮助,请帮忙采纳一下,谢谢。

#include <stdio.h>
#define MaxSize 100
typedef int ElemType;

typedef struct  
{
    ElemType data[MaxSize];
    int length;
}SeqList;

void ListInit(SeqList* L)
{
    L->length = 0;
}

int ListLength(SeqList* L)
{
    return L->length;
}

int ListInsert(SeqList* L,int i,ElemType x)
{
    int j;
    if(L->length == MaxSize)
    {
        printf("顺序表已满无法插入!");
        return 0;
    }else if (i<1 || i>L->length+1) 
    {
        printf("插入位序不合法!\n");
        return 0;
    }else
    {
        //i--;  //修改1  
        for(j=L->length;j>i;j--)
            L->data[j] = L->data[j-1];
        L->data[i-1] = x;  //修改2  i-1
        L->length++;
        return 1;
    }
}

int ListDelete(SeqList* L,int i,ElemType *x)
{
    int j;
    if(L->length == 0)
    {
        printf("顺序表已空无数据元素可删!\n");
        return 0;
    }else if (i<1 || i>L->length)
    {
        printf("删除位序不合法!\n");
        return 0;
    }else
    {
        i--;
        *x = L->data[i];
        for (j=i;j<L->length;j++)
            L->data[j] = L->data[j+1]; //修改3
        L->length--;
        return 1;
    }
}

int ListGet(SeqList* L,int i,ElemType* x)
{
    if (i<1 || i > L->length)
    {
        printf("获取位置不合法\n");
        return 0;
    }else
    {
        *x = L->data[i-1]; //修改4
        return 1;
    }
}

void main()
{
    SeqList myList;
    int i,x;
    ListInit(&myList);
    for(i=1;i<=10;i++)
        ListInsert(&myList,i,i);
    ListDelete(&myList,4,&x);
    //修改5
    for(i=1;i<=9;i++)
    {
        ListGet(&myList,i,&x);
        printf("%d ",x);
    }
    return ;
}