求助:定长顺序线性表 编译错误
/*ADT SqList{
数据对象:D={ai|ai∈ElemSet,i=1,2,...,n, n≧0}
数据关系:Rl={<ai-1,ai>|ai-1,ai∈D,i=1,2,...n;}
基本操作:
InitList_SL(&L)
操作结果: 构造一个空的顺序表L。
ListEmpty_SL(&L)
操作结果: 若L为空表则返回TRUE,否则返回FALSE。
GetElem_SL(&L,i,&e)
操作结果: 用e返回L中第i个数据元素值。
LocateElem_SL(&L,e,compare())
操作结果: 返回L中第一个与e满足compare()数据元素的位序。若这样的元素不存在,则返回值为0。
PriorElem_SL(&L,cur_e,&pre_e)
操作结果: 若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义。
NextElem_SL(&L,cur_e,&next_e)
操作结果: 若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义。
ListInsert_SL(&L,i,e)
操作结果: 在L中第i个数据元素之前插入新的数据元e,L的长度加1。
ListDelete_SL(&L,i,&e)
操作结果: 删除L的第i个数据元素,并用e返回其值,L的长度减1。
ListTraverse_SL(&L,visit())
操作结果: 依次对L的每个元素调用函数visit()。一旦visit()失败,则操作失败。
}ADT SqList
*/
#include "stdio.h"
#include "conio.h"
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define INFEASIBLE -2
#define MAXLSIZE 10
typedef int Status;
typedef int SLElemType;
typedef int SqList[MAXLSIZE+1];
void InitList_SL(SqList L)
{
int j;
for(j=0;j<MAXLSIZE+1;j++)
L[j]=0;
}
Status ListEmpty_SL(SqList L)
{
if(L[0]==0) return TRUE;
return FALSE;
}
Status GetElem_SL(SqList L,int i,SLElemType *ep)
{
int j;
if(i<1||i>L[0]) return ERROR;
*ep=L[i];
return OK;
}
int LocateElem_SL(SqList L,SLElemType e,Status (*compare)())
{
int j=1;
while(j<=L[0])
{
if(compare(L[j],e)==0) break;
j++;
}
if(j>L[0]) return 0;
return j;
}
Status PriorElem_SL(SqList L,SLElemType cur_e,SLElemType *pre_eptr)
{
int j=1;
while(j<=L[0])
{
if(cur_e==L[j]) break;
j++;
}
if(j>L[0]||j==1) return ERROR;
*pre_eptr=L[j-1];
return OK;
}
Status NextElem_SL(SqList L,SLElemType cur_e,SLElemType *next_eptr)
{
int j=1;
while(j<L[0])
{
if(cur_e==L[j]) break;
j++;
}
if(j>=L[0]) return ERROR;
*next_eptr=L[j+1];
return OK;
}
Status ListInsert_SL(SqList L,int i,SLElemType e)
{
int j;
if(i<1||i>L[0]+1) return ERROR;
if(L[0]==MAXLSIZE) return ERROR;
if(i==L[0]+1)
L[i]=e;
else
{
for(j=L[0];j>=i;j--)
L[j+1]=L[j];
L[i]=e;
}
L[0]++;
return OK;
}
Status ListDelete_SL(SqList L,int i,SLElemType *ep)
{
int j;
if(i<1||i>L[0]) return ERROR;
*ep=L[i];
for(j=i;j<=L[0]-1;j--)
L[j]=L[j+1];
L[0]--;
return OK;
}
Status ListTraverse_SL(SqList L,Status (*visit)())
{
int j;
for(j=0;j<=L[0];j++)
if(!visit(L[j])) return ERROR;
return OK;
}
int main(void)
{
SqList L;
SLElemType e,*ep;
int n,j,i=1;
printf("Init SqList..\n");
InitList_SL(L);
printf("Input amount of node:");
scanf("%d",&n);
printf("Make SqList..\n");
while(n>0)
{
printf("Input data of node:");
scanf("%d",&e);
ListInsert_SL(L,i++,e);
n--;
}
printf("Now the SqList is:\n");
j=1;
while(j<=L[0])
{
printf("%d\t",L[j]);
j++;
}
printf("\n");
printf("The length is:%d\n",L[0]);
printf("Delete SqList..\n");
ep=&e;
ListDelete_SL(L,1,ep);
printf("Now the SqList is:\n");
j=1;
while(j<=L[0])
{
printf("%d\t",L[j]);
j++;
}
printf("\n");
printf("The length is:%d\n",L[0]);
printf("End!\n");
getch();
}