C 顺序表逆置问题 在输出时返回0并闪退

在完成顺序表逆置问题的代码时,为什么在输入数据以后会返回0退出运行呢?

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1

typedef int Status;     //用Status表示int类型
typedef int ElemType;    //定义ElemType为int类型

typedef struct seqList
{
    int n;
    int maxLength;
    ElemType *element;
}SeqList;

Status Init(SeqList *L, int mSize)
{
    L->maxLength= mSize;
    L->n=0;
    L->element=(ElemType *)malloc(sizeof(ElemType)*mSize);
    if (!L->element)
        return ERROR;
    return OK;
}

Status CreateList(SeqList *L)
{
    int len;
    int i;
    printf("请输入想要创建表的长度:");
        scanf("%d",&len);
    if(len<0||len>L->maxLength)
        return ERROR;
    L->maxLength = len;
    printf("请输入%d个数据:",len);
    for(i=0;i<len;i++)
    {
        scanf("%d",&L->element[i]);
    }
    return OK;
}

Status Output(SeqList *L)
{
    int i;
    for(i=0;i<=L->maxLength;i++)
    printf("%d",L->element[i]);
}

Status ReverseList(SeqList *L)
{
    int i;
    ElemType temp;
    if(!L->element)
        return ERROR;
    for(i=0;i<L->maxLength/2;i++)
    {
        temp = L->element[i];
        L->element[i] = L->element[L->maxLength-i-1];
        L->element[L->maxLength-i-1] = temp;
    }
    return OK;
}

void main()
{
    SeqList list;
    Init(&list,10);
    CreateList(&list);
    printf("初始线性表为:");
    Output(&list);
    ReverseList(&list);
    printf("逆置后的线性表为:");
    Output(&list);
}

只能运行到如下步骤,再敲击回车键就会闪退

img

并返回0

img

想不明白到底是哪里出现了问题
有人可以解答嘛,怎样可以实现逆置并输出

把顺序表的最大长度和创建的长度混淆了,修改处见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
 
typedef int Status;     //用Status表示int类型
typedef int ElemType;    //定义ElemType为int类型
 
typedef struct seqList
{
    int n;
    int maxLength;
    ElemType *element;
}SeqList;
 
Status Init(SeqList *L, int mSize)
{
    L->maxLength= mSize;
    L->n=0;
    L->element=(ElemType *)malloc(sizeof(ElemType)*mSize);
    if (!L->element)
        return ERROR;
    return OK;
}
 
Status CreateList(SeqList *L)
{
    int len;
    int i;
    printf("请输入想要创建表的长度:");
        scanf("%d",&len);
    if(len<0||len>L->maxLength)
        return ERROR;
    L->n = len;    //L->maxLength = len;
    printf("请输入%d个数据:",len);
    for(i=0;i<len;i++)
    {
        scanf("%d",&L->element[i]);
    }
    return OK;
}
 
Status Output(SeqList *L)
{
    int i;
    for(i=0;i<L->n;i++) //for(i=0;i<=L->maxLength;i++)
    printf("%d",L->element[i]);
}
 
Status ReverseList(SeqList *L)
{
    int i;
    ElemType temp;
    if(!L->element)
        return ERROR;
    for(i=0;i<L->n/2;i++) //for(i=0;i<L->maxLength/2;i++)
    {
        temp = L->element[i];
        L->element[i] = L->element[L->n-i-1]; //L->element[L->maxLength-i-1];
        L->element[L->n-i-1] = temp;  //L->element[L->maxLength-i-1]
    }
    return OK;
}
 
void main()
{
    SeqList list;
    Init(&list,10);
    CreateList(&list);
    printf("初始线性表为:");
    Output(&list);
    ReverseList(&list);
    printf("逆置后的线性表为:");
    Output(&list);

}