将顺序表初始化为1-100,并取第64个,在main中return时出错

将顺序表初始化为1-100,并取第64个,在main中return时出错

#include
#include
#define MAXSIZE 100

// 创建顺序表

typedef struct
{
    int* elem;        //声明动态数组
    int length;        //记录表的当前长度
    int size;        //记录表的分配容量(最大长度)
}SqList;


// 初始化顺序表
SqList Initlist(SqList &L)
{
    L.elem = (int*)malloc(sizeof(int));  //构造一个空的顺序表,动态申请存储空间
    if (!L.elem)  //如果申请失败,作出提示并安全退出程序
    {
        printf("初始化失败!");
        exit(0);
    }
    L.length = 0;  //表的初始长度为0
    L.size = MAXSIZE; // 表的存储空间(最大长度)为MAXSIZE 

    return L;
}

//取值
int GetElem(SqList L, int i, int& e)
{
    if (i < 1 || i > L.length)   //判断i的值是否合理(是否为负数或是否超出表长),不合理返回ERROR
    {
        printf("获取值失败!");
        exit(0);
    }

    e = L.elem[i - 1];  // elem[i - 1]单元存储第i个数据元素

    return e;
} 

// 赋值
void get_value(SqList &L)
{
    int i, n;
    //scanf_s("%d",&n);
    for (i = 0; i < L.size; i++)
    {
        L.elem[i] = i + 1;
        L.length++;//长度随赋值情况增加
    }
    
}
    
int main(void)
{    
    int i= 64;     //取值第64个元素
    int e , t;
    SqList L;  // 声明顺序表
    Initlist(L); //初始化
    get_value(L);  //赋值
    t = GetElem(L, i, e); //取值
    printf("%d", t);
    
    free(L.elem);
    return 0;
}

下面是报错:

img

这个分配内存错了,应该是如下这个:

L.elem = (int*)malloc(MAXSIZE * sizeof(int));