C语言顺序表提问-程序不报错但无输出结果

问题遇到的现象和发生背景

程序不输出啊

问题相关代码,请勿粘贴截图
#include <stdio.h>

typedef int ElemType;
//定义顺序表
struct List{
    ElemType *list;
    int Size;
    int MaxSize;
};
void Delete(int i,struct List *L);  //定义线性表的删除
void Insert(ElemType X,int i,struct List *L);   //定义线性表的插入
void print(struct List L);     //定义线性表中数据的显示
int Find(ElemType X,struct List L);//定义线性表数据的定位和查找
//初始化顺序表
void ListInitiate(struct List *L){
    L->Size = 0;                //定义初始化元素个数
}
//删除元素
void Delete(int i,struct List *L){
    int j;
    if(L->Size <= 0){
        printf("删除失败!\n");
    }else if(i < 0 || i > L->Size-1){
        printf("参数i错误!\n");
    }else {
        for(j = i+1;j <= L->Size-1;j++)
            L->list[j-1] = L->list[j];
        L->Size--;
    }
}
//插入元素
void Insert(ElemType X,int i,struct List *L){
    int j;
    if(L->Size >= sizeof(L->list)){
        printf("顺序表已满!\n");
    }else if(i < 0 || i > L->Size){
        printf("参数i不合法!\n");
    }else {
        for(j = L->Size;j > i;j--)
            L->list[j] = L->list[j-1];
        L->list[i] = X;
        L->Size++;
    }
}
//显示数据
void print(struct List L){
    int i = 0;
     printf("此时的顺序表为:");
    for(i = 0;i < L.Size;i++)
        printf("%d",L.list[i]);
    printf("\n");
}
//查找数据
int Find(ElemType X,struct List L){
    int temp;
    while(temp <= sizeof(L.list) || L.list[temp] != X)
        temp++;
    if(sizeof(L.list) < temp){
        printf("未找到该数据!");
        return -1;
    }else
        return temp;
}
void main(){
    int i;
    struct List L;  //定义顺序表
    ListInitiate(&L);   //初始化顺序表
    for(i = 0;i < 10;i++){
        Insert(i+1,i,&L);   //插入函数
    }
    printf("查找值为8的下标是:%d\n",Find(8,L)); //查找函数
    print(L);   //显示函数
    Delete(5,&L);   //删除函数
    print(L);   //显示函数
}

运行结果及报错内容

中间就断了

我的解答思路和尝试过的方法
我想要达到的结果

输出7
01 2 3 4 5 6 7 8 9
01 2 3 4 6 7 8

修改处见注释,供参考:

#include <stdio.h>
#define MaxSize 10  //修改
typedef int ElemType;
//定义顺序表
struct List{
    ElemType *list;
    int Size;
    //int MaxSize;   //修改
};
void ListInitiate(struct List *L);
void Delete(int i,struct List *L);  //定义线性表的删除
void Insert(ElemType X,int i,struct List *L);   //定义线性表的插入
void print(struct List L);     //定义线性表中数据的显示
int  Find(ElemType X,struct List L);//定义线性表数据的定位和查找
//初始化顺序表
void ListInitiate(struct List *L){
    L->list = (ElemType*)malloc(sizeof(ElemType)*MaxSize); //修改
    L->Size = 0;                //定义初始化元素个数
}
//删除元素
void Delete(int i,struct List *L){
    int j;
    if(L->Size <= 0){
        printf("删除失败!\n");       //修改
    }else if(i <= 0 || i > L->Size){ // }else if(i < 0 || i > L->Size-1){
        printf("参数i错误!\n");
    }else {
        for(j = i;j < L->Size;j++)
            L->list[j-1] = L->list[j];
        L->Size--;
    }
}
//插入元素
void Insert(ElemType X,int i,struct List *L){
    int j;
    if(L->Size == MaxSize){  //if(L->Size >= sizeof(L->list)){
        printf("顺序表已满!\n");
    }else if(i < 0 || i > L->Size){
        printf("参数i不合法!\n");
    }else {
        for(j = L->Size;j > i;j--)
            L->list[j] = L->list[j-1];
        L->list[i] = X;
        L->Size++;
    }
}
//显示数据
void print(struct List L){
    int i = 0;
     printf("此时的顺序表为:");
    for(i = 0;i < L.Size;i++)
        printf("%d ",L.list[i]);
    printf("\n");
}
//查找数据
int Find(ElemType X,struct List L){
    int temp = 0;
    while(temp < L.Size && L.list[temp] != X)  //修改
    // while(temp <= sizeof(L.list) || L.list[temp] != X)
        temp++;
    if(L.Size <= temp){ //if(sizeof(L.list) < temp){ //修改
        printf("未找到该数据!");
        return -1;
    }else
        return temp+1;   //修改
}
void main(){
    int i;
    struct List L;  //定义顺序表
    ListInitiate(&L);   //初始化顺序表
    for(i = 0;i < 10;i++){
        Insert(i+1,i,&L);   //插入函数
    }
    printf("查找值为8的下标是:%d\n",Find(8,L)); //查找函数
    print(L);   //显示函数

    Delete(5,&L);   //删除函数
    print(L);   //显示函数

}