线性表基本运算实现不知哪里错了

求解答,为啥运行不得

```c++
 //定义头文件
#include<stdio.h>
#include<malloc.h>
//定义全局变量
#define MaxSize 50
//定义元素类型
typedef char ElmeType
//定义顺序表的结构体
typedef struct
{
    ElemType data[MaxSize];
    int length;
}SqList;
//初始化线性表
void LnitList(SqList *&L)
{
   //动态分配空间
    L=(SqList*)malloc(sizeof(Sqlist));
    //线性表(顺序表)的长度为0
    L->Length=0;
}

//创建顺序表
void CreateList(SqList *&L,ElemType a[],int n)
{
    int i;
//分配存放线性表的空间
    L=(Sqlist*)malloc(sizeof(Sqlist));
//把a数组中的元素依次放置到线性表的data[]
    for(i=0;i<n;i++)
        L->data[i]=a[i];
//设置线性表的长度
    L->length=n;
}
//输出顺序表
void DispList(SqList *L)
{
//判断线性表是否为空
    if(ListEmpty(L))
        return;
    //依次输出线性表的内容
    for(int i=0;i<L->length;i++)
        printf("%d",L->data[i]);
    printf("\n");
}
//求线性表的长度
int ListLength(SqList *L)
{
    return(L->length);
}

//求线性表第i个数据元素值,并存放在变量e中
int GetElem(SqList  *L,int i,ElemType &e)
{
//判断i是否合理
    if(i<1||i>L->length)
        return false;
//把元素赋值给e
    e=L->data[i-1];
    return ture;
}

//按元素值查找,若查找不成功,返回0,否则返回该元素的逻辑位序
int LocateElem(SqList *L, ElemType e)
{
    int i=0;
   //扫描数组元素,i++
    while(i<L->length->dada[i]!=e)
        i++;
//若i>L->length,则查找不成功,返回0,否则返回该元素的逻辑位序
    if(i>=L->length)
        return 0;
    else
        return i+1;
}
//main函数
void main()
{
    Sqlist*L;
    ElemType a[10];
    int i,n=10;
    printf("请输入10个字符:\n");
    for(i=0;i<10;i++)
        scanf("%c",&a[i]);
    //调用InitList()初始化线性表
    Lnitlist(L);
//调用CreateList()建立线性表
    CreateList(L,a,n);
    //调用DispList()输出线性表
    DispList(L);
//调用ListLength ()求线性表的长度
    ListLength(L);
//调用GetElem ()找线性表第i个元素
    GetElem(L,i,e);
//调用LocateElem ()查找线性表中是否存在所给元素
    LocateElem(L,e);
}




```

我对你代码不能运行的地方都标记了注释,主要两个问题:前后变量不一致、使用变量函数没有先声明。

#define MaxSize 50
typedef char ElemType;//你写成了ElmeType
typedef struct
{
    ElemType data[MaxSize];
    int length;
}SqList;
//先把ListLength函数都声明一遍
//因为DispList要调用,但是没办法调用后声明的ListLength,所以这里先声明
int ListLength(SqList *L);
void LnitList(SqList *&L)
{
    L = (SqList*)malloc(sizeof(SqList));//SqList大小写
    L->length = 0;//length大小写
}
void CreateList(SqList *&L, ElemType a[], int n)
{
    int i;
    L = (SqList*)malloc(sizeof(SqList));//SqList大小写
    for (i = 0; i < n; i++)
        L->data[i] = a[i];
    L->length = n;
}
void DispList(SqList *L)
{
    if (ListLength(L)==0)//你都没写ListEmpty(L)函数
        return;
    for (int i = 0; i < L->length; i++)
        printf("%d", L->data[i]);
    printf("\n");
}
int ListLength(SqList *L)
{
    return(L->length);
}
int GetElem(SqList  *L, int i, ElemType &e)
{
    if (i<1 || i>L->length)
        return false;
    e = L->data[i - 1];
    return true;//不是ture
}
int LocateElem(SqList *L, ElemType e)
{
    int i = 0;
    while (i < L->length&&L->data[i] != e)//不是L->length->data[i]
        i++;
    if (i >= L->length)
        return 0;
    else
        return i + 1;
}
void main()
{
    SqList*L;//SqList大小写
    ElemType a[10];
    int i, n = 10;
    printf("请输入10个字符:\n");
    for (i = 0; i < 10; i++)
        scanf("%c", &a[i]);
    LnitList(L);
    CreateList(L, a, n);
    DispList(L);
    ListLength(L);
    ElemType e;//先声明才能用e
    GetElem(L, i, e);
    LocateElem(L, e);
}