|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
9 @( d- O+ D9 ]) h$ P(a1,…,ai-1,ai,…,an)) x' O: _3 y6 N- c0 a* z4 ]! }
变成长度为n-1的线性表
7 j; a" W3 Y! a6 ?( C(a1,…,ai-1,ai+1,…,an)( q: o& Z( L- s( c" S% l
数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。( T6 M" O6 c i! Y4 B
一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
# p. A9 \' S: t sStatus ListInsert_Sq(SqList &L,inti,ElemType){( [5 H9 N) @# s. G. @, p
//在顺序线性表L中第i个位置之前插入新的元素e,
) |0 g( E* [2 ?4 p D* j//i的合法值为1≤i≤ListLength——Sq(L), d) g6 V) T2 y; B7 |4 z9 D& s$ q
if((i<1)||(i>L.length))returnERROR;//i值不合法; a1 o- B) E9 i# _6 E6 P
P=&(L.elem[i-1];) //p为被删除元素的位置/ ?& L% h4 |, A% g2 \8 Q
e=*please //被删除元素的值赋给e
$ S2 Y- N2 T5 [3 W/ I& c. Gq=L.elem+L.length-1; //表尾元素的位置
- Z e$ e8 }- l! R C1 Rfor(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移
( g& F1 w# h% i, O/ d7 q7 A--L.length; //表长减1
7 ]4 L; p& E$ Y# M/ ureturn OK;
& |) A# I! w: f0 h' W% f}//ListInsert_Sq |
|