|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表% ^* A$ B* C! X7 H& F, `3 F
(a1,…,ai-1,ai,…,an)& r( h' k/ G# ~$ T
变成长度为n-1的线性表+ S. _/ Y/ N. s3 N
(a1,…,ai-1,ai+1,…,an)
3 R m1 w8 i4 u5 M数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。4 G& A I% }5 f: B
一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
3 p1 @2 J) f- F: T/ T( G1 x+ hStatus ListInsert_Sq(SqList &L,inti,ElemType){
! y. {) }2 l/ X& b5 X, V//在顺序线性表L中第i个位置之前插入新的元素e,
9 H4 M- v1 E; c4 E% @, ?( y//i的合法值为1≤i≤ListLength——Sq(L)6 f& K& q% A0 Z( K7 @
if((i<1)||(i>L.length))returnERROR;//i值不合法
! `7 ~( i# s. G' W. [0 n% dP=&(L.elem[i-1];) //p为被删除元素的位置8 o8 I" M# w# U$ m' n" M2 ^
e=*please //被删除元素的值赋给e1 G3 Y K. L; O* _2 _+ e
q=L.elem+L.length-1; //表尾元素的位置
8 r) Z4 o) |+ B G. ~for(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移
7 V6 M. b+ z2 A+ r- p2 ^--L.length; //表长减1
/ A/ T, }# E1 }) L+ d( d! S6 ^/ B& F& Wreturn OK;
5 H" C8 f/ u0 {' V}//ListInsert_Sq |
|