//定义线性表
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE]; //这是数组的长度,从0开始,也就是最大长度
int length; //这是线性表的长度,表示线性表已经存储了多少个元素 }SqList;
/*
**************************
**************************
*/ //返回线性表L的元素
typedef int Status;
Status GetElem1 (SqList L,int i,ElemType *e)
{
if (L.length== || i<i || i>L.length)
return -; *e = L.data[i-];
return ;
} /*
**************************
**************************
*/ //元素插入线性表
Status ListInsert (SqList *L,int i,ElemType e)
{
int k;
if (L->length == MAXSIZE) //表示线性表的最大长度已经等于数组的长度,线性表已经满
return -; if(i < || i > L->length+) //表示要插入的位置i 不在线性表的范围
return -; if (i <= L->length) //若要插入的位置不在线性表的尾端
for (k = L->length - ;k >= i- ;k--) //就是插入位置后面的元素一个个往后面挪出一个位置,先是线性表最后一个元素挪
L->data[k+] = L->data[k]; L->data[i-] = e; // 插入的i是相对于线性表来说的下标从1开始,data是数组,下标从0开始,所以辅助到i-1上
L->length++; //表示线性表的长度加上1
return ;
} /*
**************************
**************************
*/ //元素删除
Status ListDelete(SqList *L,int i,ElemType *e)
{
int k;
if (L->length ==) //判断线性表是否为空
return -;
if (i>L->length || i<) //判断要删除的元素是否在线性表中
return -;
*e = L->data [i-]; //先把数组的数组拿出来赋值给e if (i< L->length)
for (k=i;k<L->length;k++) //直接把药删除的元素后面的元素直接往前移动
L->data[k-]=L->data[k]; L ->length --; //最后一步是把线性表的长度减去1 数组的长度不用减,英文已经用maxsize定义了。 } int main()
{
return ;
}
简单的线性表增删,本人是菜鸟,有什么问题请评论,我真的希望大家能给点指点,谁也是从菜鸟开始的,
做技术的没有什么好嘲笑的,技术的东西是永远学不完的,日新月异。
技术靠一点一点积累的,大牛也是這样,
希望我也能加油。