|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
/ x; F. W6 ]& L3 }$ @(a1,…,ai-1,ai,…,an)( r* N- b6 {# T* ^& S7 m
变成长度为n-1的线性表
. p1 F( f: `" d: L(a1,…,ai-1,ai+1,…,an)
, a4 N: Y7 `. x+ n5 V" v. Z数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。; s& c7 l, m I& N6 o- f6 r0 ~
一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
! t7 E1 l( s; i( ^Status ListInsert_Sq(SqList &L,inti,ElemType){0 X9 i1 U# ]+ p' j& s
//在顺序线性表L中第i个位置之前插入新的元素e,7 A m7 Z9 c3 f5 W# c
//i的合法值为1≤i≤ListLength——Sq(L)
- E! P! k0 A4 G8 Jif((i<1)||(i>L.length))returnERROR;//i值不合法
, a4 k. z7 I; G- M, `7 ~8 `4 wP=&(L.elem[i-1];) //p为被删除元素的位置
" B9 m* l) r% N! q# Je=*please //被删除元素的值赋给e9 b) R/ {; E, |1 g
q=L.elem+L.length-1; //表尾元素的位置
& D7 A6 y+ \6 U+ b _/ @. yfor(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移# r/ g" v! `8 Y" [! n
--L.length; //表长减1$ @: ?& a. T+ ^: S# y j+ V
return OK;
( X+ O q; I5 v4 A6 E}//ListInsert_Sq |
|