#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSIZE 20
typedef int ElemType;
typedef int Status;
typedef struct LNode {
ElemType data[MAXSIZE];
int length; //线性表中当前元素的个数
}SqList;
//初始化线性表
StatuscreatList(SqList *L)
//输入参数:(1)L:L的地址
{
L->length = 0;
return OK;
}
//返回线性表中的元素个数
intgetLength(SqList *L)
//输入参数:(1)L:L的地址
{
return L->length;
}
//在位置n处插入元素e(注意:位置是从0开始计数的)
StatusinsertList(SqList *L, int n, ElemType e)
//输入参数:(1)L:L的地址
{
int k;
//判断输入参数合法性
if (n < 0 || n > L->length) return ERROR;
//判断线性表是否已满
if (L->length + 1>= MAXSIZE) return ERROR;
//从第n位开始,每个元素后移一位
//拿到最后一个元素的位置(地址或下标)
for (k = L->length; k > n; k--)
{
L->data[k] = L->data[k-1];
}
//元素e放入位置n处
L->data[n] = e;
//线性表当前元素个数加1
L->length++;
return OK;
}
//删除位置n处的元素
StatusdeleteList(SqList *L, int n)
//输入参数:(1)L:L的地址。(2)n:被删除的元素在线性表中的位置
{
//判断输入参数的合法性
if (n<0 || n>L->length) return ERROR;
//判断线性表是否为空
if (L->length == 0) return ERROR;
//从第n处位置开始,每个元素前进一位
for (n; n < L->length; n++)
{
L->data[n-1] = L->data[n];
}
//线性表中当前元素的个数减1
L->length--;
return OK;
}
//查找线性表中的第n个元素
ElemTypesearchList(SqList *L, int n)
//输入参数:(1)L:L的地址。(2)n:线性表中的第n个元素。
{
//判断输入参数的合法性
if (n<0 || n>L->length) return ERROR;
return L->data[n];
}
//遍历线性表中元素
Statustraverse(SqList *L)
//输入参数:(1)L:L的地址
{
for (int i = 0; i < L->length; i++)
{
printf("线性表中第%d个元素是%d\n", i, L->data[i]);
}
return OK;
}
int main()
{
SqList La;
creatList(&La);
for (int i = 0; i < 10;i++)
{
insertList(&La,i, i);
}
printf("线性表的长度是%d\n", getLength(&La));
traverse(&La);
deleteList(&La,5);
printf("线性表的长度是%d\n", getLength(&La));
traverse(&La);
return OK;
}