```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);
}