请问发生这种情况是怎么回事呢

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

#include<string.h>
#include<stdio.h>
#define MAX_SIZE 100
#define Elemtype int
#define Status int

/*构建一个顺序表类型*/
typedef struct
{
    Elemtype data[MAX_SIZE];
    int length;
}Sqlist;

/*初始化顺序表函数,构建一个新的顺序表*/
Status Intlist(Sqlist& L)
{
    memset(L.data, 0, sizeof(L));
    L.length = 0;
    return 0;
}

/*创建顺序表函数,初始化前n个数字*/
bool Creatlist(Sqlist& L, int n)
{
    if (n<0 || n>MAX_SIZE)
    {
        printf("输入错误\n");
        return false;
    }
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &L.data[i]);
        L.length++;
    }
    return true;
}

/*逆置函数*/
bool Changelist(Sqlist& L)
{
    int temp ;
    for (int i = 0; i <= L.length/2; i++)
    {
        temp = L.data[i];
        L.data[i] = L.data[L.length - i];
        L.data[L.length - i] = temp;
    }
    return 0;
}

/***************************************功能函数**************************************************/
//输出功能函数
void Printlist(Sqlist L)
{
    printf("当前顺序表的所有数为\n");
    for (int i = 0; i < L.length; i++)
    {
        printf("%d ", L.data[i]);
    }
    printf("\n");
}

//创建顺序表函数
void creat(Sqlist& L)
{
    int n = 0;
    bool flag;
    L.length = 0;
    printf("请输入要创建的线性表长度n\n");
    scanf("%d", &n);
    printf("请输入n个数,并用空格隔开\n");
    flag = Creatlist(L, n);
    if (flag)
    {
        printf("创建成功\n");
        Printlist(L);
    }
    else
    {
        printf("输入长度非法\n");
    }
}

int main()
{
    Sqlist L;
    creat(L);
    Changelist(L);
    Printlist(L);
    return 0;
}

img

L.data[i] = L.data[L.length - i];
L.length 是从0开始算的,L.length - i越界了