还需要使用者写一个完整的主函数。
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void InitList(SeqList *pL);
int ListLength(SeqList *pL);
int InsList(SeqList *L, int i, ElemType e);
int DelList(SeqList *L,int i,ElemType * e);
ElemType GetData(SeqList L,int i);
int Locate(SeqList L,ElemType e);
SeqList * merge(SeqList *LA,SeqList *LB);
int main()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
return 0;
}
void InitList(SeqList *pL)
{
pL->last = -1;
}
int ListLength(SeqList *pL)
{
return pL->last +1;
}
int InsList(SeqList *L, int i, ElemType e)
{
int k,ERROR = 0;
if((i<1) ||(i>L->last+2))
{
printf("i不符合,无法插入");
return ERROR;
}
if(L->last==MAXSIZE-1)
{
printf("表满,无法插入");
return ERROR;
}
for(k=L->last;k>=i-1;k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return !ERROR;
}
int DelList(SeqList *L,int i,ElemType * e)
{
int k, ERROR = 0;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法");
return ERROR;
}
if(L->last==-1)
{
printf("表已空无法删除");
return ERROR;
}
*e=L->elem[i-1];
for(k=i-1;k<L->last;k++)
L->elem[k]=L->elem[k+1];
L->last--;
return !ERROR;
}
ElemType GetData(SeqList L,int i)
{
if(i<1||i> L.last+1)
printf("position error");
return L.elem[i-1];
}
int Locate(SeqList L,ElemType e)
{
int i=0;
while((i<=L.last)&&(L.elem[i]!=e))
i++;
if(i<=L.last)
return(i);
else
return(-1);
}
SeqList * merge(SeqList *LA,SeqList *LB)
{
int j = 0, n = 5;
SeqList *LC;
if(LA->last < LB->last)
{
LC = LA;
LA = LB;
LB = LC;
}
while(j <= LB->last)
{
LA->elem[n++]=LB->elem[j++];
}
LA->last = LA->last + LB->last+1;
return LA;
}