顺序表的增删改查 出现好多报错

#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE
#define OK 1
#define ERROR 0
typedef struct{
int *elem;
int length;
int LiseSize;
}SqList;
void fuzhi(SqList *L)
{
int length;
printf("请给顺序表赋值:\n");
printf("你想要输入几个数据:\n");
scanf("%d",&length);
printf("请输入元素:\n");
for(int i=0;i<length;i++)
scanf("%d",&L->elem[i]);
L->length=length;
}
void InsertList(SqList *L,int i,int elem)
{
int k;
if((i<1)||(i>L->length+2))
{
printf("插入位置i值不合法");
return(ERROR);
}
if(L->length>=MAX-1)
{
printf("表已满,无法插入");
return(ERROR);
}
for(k=L->length;k>=i-1;k--)
L->elem[i-1]=e;
L->length++;
return(OK);
}
void DeleteList(SqList *L,int i)
{
for(int k=i;k<=L->length;k++)
L->elem[k-1]=L->elem[k];
L->length--;
}
void AlterElement(SqList *L,int elem,int i)
{
L->elem[i-1]=elem;
}
int SearchElement(SqList L,int elem)
{
int location;
for(int i=0;ilength;i++)
if(L->elem[i]==elem)
{
location=i+1;
return location;
}
return -1;
}
void PrintList(SqList L)
{
printf("操作完后的顺序表为:\n");
for(int i=0;ilength;i++)
printf("%d",L->elem[i]);
}
int main()
{
SqList L;
L.elem = (int
)malloc(LISTSIZE
sizeof(int));
L.LiseSize = LISTSIZE;
fuzhi(&L);
printf(&L);
printf("输入你要插入的数字位置和要插入的数据值:\n");
int insert_a,insert_b;
scanf("%d%d",&insert_a,&insert_b);
InsertList(&L,insert_a-1,insert_b);
printList(&L);
int delete;
printf("输入你要删除的数据位置:\n");
scanf("%d%",&delete);
Delete(&L,delete-1);
printf(&L);
int Alter_a,Alter_b;
scanf("%d%d",&Alter_a,&Alter_b);
AlterElement(&L,Alter_a,Alter_b);
printf(&L);
int saerch;
printf("输入你要查找的数据位置:\n");
scanf("%d",&search);
int index=SearchElement(&L,search);
if(index + 1)
printf("您要查找的数据位置为%d个\n",index);
else
printf("抱歉,您要查找的数据不存在\n");
}

把代码贴出来才可以帮上忙。
都已修改调试完善,修改处见注释位置,供参考:

#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 50//修改
#define OK 1
#define ERROR 0
typedef struct{
    int *elem;
    int length;
    int LiseSize;
}SqList;
void fuzhi(SqList *L)
{
    int length;
    printf("请给顺序表赋值:\n");
    printf("你想要输入几个数据:");
    scanf("%d",&length);
    if (length > L->LiseSize){  //修改
       printf("待输入元素个数大于表长度,无法赋值!\n");
       return;
    }
    printf("请输入元素:\n");
    for(int i=0;i<length;i++)
        scanf("%d",&L->elem[i]);
    L->length=length;
}
void InsertList(SqList *L,int i,int elem)
{
    int k;
    if((i < 1)||(i > L->length))//if((i<1)||(i>L->length+2))
    {
        printf("插入位置i值不合法\n");
        return;//(ERROR);
    }
    if(L->length >= L->LiseSize)//if(L->length>=MAX-1)
    {
        printf("表已满,无法插入\n");
        return;//(ERROR);
    }
    for(k=L->length;k > i - 1; k--)
        L->elem[k] = L->elem[k-1];//修改
    L->elem[i-1]=elem; //L->elem[i-1]=e;
    L->length++;
    return;//(OK);
}
void DeleteList(SqList *L,int i)
{
    if((i < 1)||(i > L->length))//修改
    {
        printf("删除位置i值不合法\n");
        return;
    }
    if(L->length <= 0) //修改
    {
        printf("表已空,无法删除\n");
        return;
    }
    for(int k = i - 1;k < L->length - 1; k++)//修改
        L->elem[k]=L->elem[k+1];             //修改
    L->length--;
}
void AlterElement(SqList *L,int elem,int i)
{
    if((i < 1)||(i > L->length))//修改
    {
        printf("修改位置i值不合法\n");
        return;
    }
    L->elem[i-1]=elem;
}
int SearchElement(SqList* L,int elem)
{
                         //int location;修改
    for(int i=0;i < L->length;i++)
        if(L->elem[i] == elem)
                         //location=i+1;修改
            return i+1;  //location; 修改
    return -1;
}
void PrintList(SqList* L)
{
    printf("操作完后的顺序表为:\n");
    for(int i=0;i < L->length;i++)
        printf("%d ",L->elem[i]);
    printf("\n");
}
int main()
{
    SqList L;
    L.elem = (int*)malloc(LISTSIZE*sizeof(int));
    L.LiseSize = LISTSIZE;
    L.length = 0;         //修改
    fuzhi(&L);
    PrintList(&L);        //printf(&L);

    printf("输入你要插入的数字位置和要插入的数据值:");
    int insert_a,insert_b;
    scanf("%d%d",&insert_a,&insert_b);
    InsertList(&L,insert_a,insert_b);
    //InsertList(&L,insert_a-1,insert_b);
    PrintList(&L);       //printList(&L);

    int Del;             //delete;
    printf("输入你要删除的数据位置:");
    scanf("%d",&Del);    //scanf("%d%",&delete);
    DeleteList(&L,Del);  // Delete(&L,delete-1);
    PrintList(&L);       // printf(&L);

    int Alter_a,Alter_b;
    printf("输入你要修改的目标值和数据位置:");//修改
    scanf("%d%d",&Alter_a,&Alter_b);
    AlterElement(&L,Alter_a,Alter_b);
    PrintList(&L);      //printf(&L);修改

    int search;  //saerch;
    printf("输入你要查找的数据值:");
    scanf("%d",&search);
    int index = SearchElement(&L,search);
    if(index > 0)  //if(index + 1)
        printf("您要查找的数据位置为%d个\n",index);
    else
        printf("抱歉,您要查找的数据不存在\n");

    return 0;
}

报什么错啊,执行结果贴一下。

仅供参考

#include<stdio.h>
#include<stdlib.h>

typedef struct OderList
{
    int data;
}List;


//初始化
void InitList(List* list, int x)
{
    int i = 0;
    for (; i < x; i++)
    {
        scanf("%d", &list[i].data);
    }
}

//展示链表
ShowList(List* list, int x)
{
    int i = 0;
    for (; i < x; i++)
    {
        printf("%d ", list[i].data);
    }
    printf("\n");
}

//第一种增加
void InsertList(List* list, int data, int address, int* n)
{
    //1,2,4,5,6  address = 2 data = 3
    int i = 0;
    (*n)++;//插入一个原有总数+1
    if (address > *n && address < 0)
    {
        printf("坐标输入错误");
        return;
    }

    //后移动数据
    for (i = *n - 1; i >= address; i--)
    {
        list[i + 1].data = list[i].data;
    }
    list[address].data = data;
}

//第二种增加
void InsertTowList(List* list, int data, int* n)
{
    int i = 0;
    (*n)++;
    //增加在末尾
    list[*n-1].data = data;
}


//删除数据
void DeleteList(List* list, int data, int* n)
{
    int i = 0;
    //1,2,3,3,4,5,6  删除3
    //1 2 4 5 6
    for (; i < *n; i++)
    {
        if (list[i].data == data)
        {
            for (int j = i; j < *n - 1; j++)
            {
                list[j].data = list[j + 1].data;
            }
            (*n)--;
            i--;
        }
    }
}

//删2
void DeleteTowList(List* list, int address, int* n)
{
    int i = address;
    if (address > *n && address < 0)
    {
        printf("坐标输入错误");
        return;
    }
    // 1  2  3  3  4  5
    for (; i < *n - 1 ; i++)
    {
      list[i].data = list[i + 1].data;
    }
    (*n)--;
}


//查找使用的是二分查找
void SearchList(List* list, int data, int n)
{
    int left = 0; //左下标
    int right = n - 1;//右下标
    int flag = 0;
    int mid = 0;
    while (left <= right)
    {
        //1 3 4 5 6 9 10 11
        //mid 3  le 4  7    11/2  mid 5 
        //mid 5  r  4  4    
        //     
        mid = (left + right) / 2;
        if (data > list[mid].data)//大了
        {
            left = mid + 1;
        }
        else if (data < list[mid].data)//小了
        {
            right = mid - 1;
        }
        else
        {
            flag = 1;
            printf("找到了,下标为:>%d\n", mid);
            break;
        }
    }
    if (!flag)
        printf("找不到\n");
}
//一一遍历的查找
void SearcTowhList(List* list, int data, int n)
{
    int i = 0;
    for (i = 0; i < n; i++)
    {
        if (list[i].data == data)
        {
            printf("找到了,下标为%d\n",i);
            return;
        }
    }
    printf("未找到\n");
    return;
}

//修改
void Modify(List* list, int address, int data)
{
    list[address].data = data;
}

//排序
void BobbleSort(List* list, int n)
{
    int i = 0;
    int j = 0;
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - 1 - i; j++)
        {
            if (list[j].data < list[j+1].data)//升序
            {
                //交换
                int tmp = list[j].data;
                list[j].data = list[j + 1].data;
                list[j + 1].data = tmp;
            }
        }
    }
}


int main()
{
    //不能用n因为每次插入一个,n会增大,那么空间会不够,可以开辟大点
    List* list = (List*)malloc(sizeof(List*) * 50);
    int n = 0;
    printf("输入你链表的长度:>");
    scanf("%d", &n);
    
    printf("初始化链表\n");
    InitList(list, n);//初始化顺序链表表

    //增1 有下标
    int i = 0;
    int j = 0;
    printf("请输入>:插入的数据   插入地址的下标\n");
    scanf("%d%d", &j, &i);
    //每插入一个数据,原有的数据会增大。
    //如果你从0开始数的,这里就不用-1
    InsertList(list, j, i - 1, &n);
    ShowList(list, n);

    //增2 无下标
    printf("请输入要插入的数据:>");
    scanf("%d", &j);
    //增加后原有的个数会变大,所以传址调用
    InsertTowList(list, j, &n);
    ShowList(list, n);

    //删除1,无下标,删除所有k
    int k = 0;
    printf("原有数据如下\n");
    ShowList(list, n);//展示链表
    printf("请输入要删除哪个数字\n");
    scanf("%d", &k);
    DeleteList(list, k, &n);
    ShowList(list, n);

    //删除2 有下标
    printf("原有数据如下\n");
    ShowList(list, n);//展示链表
    printf("请输入要删除数据的下标\n");
    scanf("%d", &k);
    //如果你从0开始数的,这里就不用-1
    DeleteTowList(list, k-1, &n);
    ShowList(list, n);


    //查找数据是否存在
    //排序后可用二分查找,未排序,一一遍历
    
    int m = 0;
    printf("请输入要查找的数\n");
    scanf("%d", &m);

    //排序
    //BobbleSort(list, n);
    //排序后原有数据的下标不对应
    //这里用二分查找
    printf("排序后二分查找\n");
    SearchList(list, m, n);
    //这里是遍历排序查找
    printf("遍历查找\n");
    SearcTowhList(list, m, n);

    //修改
    printf("请输入要修改的数据的下标, 以及修改后的数据\n");
    scanf("%d%d", &i,&m);
    //如果你从0开始数的,这里就不用-1
    Modify(list, i - 1,m);
    ShowList(list, n);


    free(list);
    list = NULL;

    return 0;
}

img