顺序结构线性表c语言版,顺序存储结构线性表的C语言实现

=L.length:OVERFLOW

// i>=1&&i=L.length) // i=l.length 时表示为表的最后一个元素

exit(OVERFLOW);

for(j=1;j<=i+1;j++)

{

if(j==(i+1))

{

next_e=L.elem;

L.elem=p_elem;

return OK;

}

else

L.elem++;

}

}

///

//函数名:ListInsert()

//参数:SqList L,int i,ElemType e

//初始条件:线性表L已存在,1<=i<=ListLength(L)+1

//功能:在线性表中第i个数据元素之前插入数据元素e

//返回值:失败:ERROR

// 成功:OK

///

Status ListInsert(SqlistL,int i,ElemType e)

{

int *q=&(L.elem[i-1]);

ElemType *newbase,*p;

if(i<1||i>(L.length+1)) //i值不合法

return ERROR;

if(L.length>=L.listsize) //当前存储空间已满,增加分配

{

newbase=(ElemType*)realloc(L.elem,L.listsize+LISTINCREMENT*sizeof(ElemType));

if(newbase==NULL) //存储分配失败

exit(OVERFLOW);

L.elem=newbase; //赋予新的基地址

L.listsize+=LISTINCREMENT; //增加的存储容量

}

q=&(L.elem[i-1]); //插入元素的位置

for(p=&(L.elem[L.length-1]);p>=q;--p)

*(p+1)=*p; //插入元素位置之后的所有元素向后移1位

*q=e; //插入元素e

++L.length; //表长增加1

return OK;

}

///

//函数名:ListDelete()

//参数:SqList L,int i,Elemtype e

//初始条件:线性表L已存在,1<=i<=ListLength(L)

//功能:将线性表L中第i个数据元素删除

//返回值:失败:ERROR

// 成功:OK

///

Status ListDelet(SqlistL,int i,ElemType e)

{

if(i<1||(i>L.length))

return ERROR;

ElemType *p,*q;

p=&(L.elem[i-1]); //删除元素的位置,在Sqlist中i位置元素为L.elem[i-1]

e=*p; //被删除元素的值赋给e

q=L.elem+L.length-1; //表尾位置

for(++p;p<=q;++p)

*(p-1)=*p; //p后面的元素都向前移(左)一位

--L.length;

return OK;

}

///

//函数名:union()

//参数:SqList La,SqList Lb

//初始条件:线性表La,Lb已存在

//功能:将所有在线性表Lb中但不在La中的元素插入到La中

//返回值:失败:ERROR

// 成功:OK

///

void union(SqList &La, SqList Lb)

{

int i;

if(La.length==0||Lb.length==0) return ERROR;

for(i=0;i<=Lb.length;i++)

{

GetElem(Lb,i,e); //得到Lb中的第i个元素的值

If(!LacateElem(La,e)) //查看La中是否有e元素

listInsert(La,++La.length,e); //没有这将e元素插入表尾

}

retutn OK;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值