错误如上图,源代码如下,小明求解答!
#include"stdio.h"
#include"stdlib.h"
#define MaxSize 100
typedef int ElemType;
// 声明顺序表的结构体类型
typedef struct{
ElemType *elem; // 线性表数据存放的空间
int length; // 当前线性表的长度
}SqList; // 定义数据类型的名称
/**
* @brief * 初始化线性表
* 构造一个空的线性表,申请存储空间
*/
void InitList(SqList *L){
// 申请空间,分配内存
L->elem = (ElemType *)malloc(sizeof(ElemType)*MaxSize);
// 分配失败
if(L->elem == NULL){
printf("内存分配失败!\n");
exit(1);
}
// 初始化当前线性表的长度
L->length = 0;
printf("内存分配成功!\n");
}
/**
* @brief 插入元素
* @param i 插入逻辑[下标]位置
* @param e 插入值
*/
void ListInsert(SqList *L,int i,ElemType e){
// 插入值非法
if(i < 0 || i > L->length){
printf("插入位置非法!\n");
exit(1);
}
// 存储空间已满
if(L->length >= MaxSize){
printf("顺序表存储空间已满!\n");
exit(1);
}
// 插入
for(int j = L->length-1;j >= i;j--)
L->elem[j+1] = L->elem[j];
L->elem[i] = e; // 在位置i插入数据e
L->length++; // 顺序表长度加1
}
/**
* @brief 释放内存
*/
void FreeList_Sq(SqList *L){
if(L == NULL){
return ;
}
if(L->elem != NULL){
free(L->elem);
L->elem = NULL;
}
free(L);
return;
}
int main(){
SqList L;
int n,e; // n插入元素个数,e插入元素
// 初始化
InitList(&L);
// 插入元素
printf("请输入顺序表的大小:");
scanf("%d",&n);
printf("输入顺序表的元素:");
for(int i = 0;i < n;i++){
scanf("%d",&e);
ListInsert(&L,i,e);
}
// 销毁
FreeList_Sq(&L);
return 0;
}
以上是代码,断点测试提示这个错误,如图,