|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
7 H- I) Y& N7 w+ j6 r2 Q(a1,…,ai-1,ai,…,an)9 ?8 `) k% w; R- A
变成长度为n-1的线性表
$ h% n+ E! W, m" f(a1,…,ai-1,ai+1,…,an)
. Y0 O1 U/ w0 G数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。
( y3 r* F7 O' m" m8 ^一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
+ I+ j( E4 M3 c3 d V! X3 C" L' aStatus ListInsert_Sq(SqList &L,inti,ElemType){# z5 u1 V% o# C4 F$ r/ [
//在顺序线性表L中第i个位置之前插入新的元素e,3 N) z9 g' H( c; Z+ z2 e
//i的合法值为1≤i≤ListLength——Sq(L)/ C' f/ }/ O6 t, a" W' s2 W
if((i<1)||(i>L.length))returnERROR;//i值不合法6 h5 r9 C5 R' [! W
P=&(L.elem[i-1];) //p为被删除元素的位置& j4 V) q( a( a2 z9 z. V
e=*please //被删除元素的值赋给e
$ C p) o" S( Q$ o9 Qq=L.elem+L.length-1; //表尾元素的位置
/ D) w* r5 q! b. e% Efor(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移1 P. W" Q( Z7 {
--L.length; //表长减16 i& r( R# k4 ~! q; L% z, t
return OK;. c! e" t3 c0 Q! q! T( C2 F
}//ListInsert_Sq |
|