#define MaxSize 50
#define ERROR 0;
#define OK 1;
typedef int ElemType;
typedef struct sqlList
{
ElemType data[MaxSize];
int length;
}SqList;
void InitList(SqList *L)
{
printf("InitList\n");
L->length =0;
}
int GetElem(SqList *L,int i,ElemType *e)
{
printf("GetElem\n");
if(i<1 || i>L->length)
{
printf("ERROR\n");
return ERROR;
}
*e = L->data[i-1];
printf("e=%d\n",*e);
return OK;
}
int LocateElem(SqList *L,ElemType e)
{
printf("LocateElem\n");
return 0;
}
int ListInsert(SqList *L,ElemType e,int i)
{
printf("ListInsert");
if(i<1 || i > L->length+1)
{
return ERROR;
}
i--; //将逻辑顺序转为数组下标
for(int j=L->length;j>i;j--)
{
L->data[j] =L->data[j-1];
}
printf(" 插入数据=%d\n", e);
L->data[i] =e;
L->length++;
return OK;
}
void printListData(SqList *L)
{
printf("printListData\n");
for(int i =0;i<L->length;i++)
{
printf("%d, ",L->data[i]);
}
printf("\n");
}
int ListDelete(SqList *L,int i,ElemType *e)
{
printf("ListDelete");
if(i<1 || i > L->length+1)
{
return ERROR;
}
i--;
*e = L->data[i];
for(int j=i; j<L->length-1;j++)
{
L->data[j] = L->data[j+1];
}
L->length--;
return OK;
}
void Merge(SqList *L,SqList *L2,SqList L3)
{
}
void main()
{
printf("线性表\n");
SqList sqList;
InitList(&sqList);
ElemType insertData = 1;
for(int i=0;i<10;i++)
{
insertData =i * 5;
ListInsert(&sqList,insertData,1);
}
printListData(&sqList);
ElemType *e;
GetElem(&sqList,5,e);
printf("getE:%d\n",*e);
ListDelete(&sqList,2,e);
printf("deleted:%d\n",*e);
printListData(&sqList);
//ElemType locateData;
//LocateElem(&sqList,locateData);
}
已经调试通过