|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
4 r8 N$ G% }+ [" X3 J& F(a1,…,ai-1,ai,…,an)+ Z+ V8 |( n0 t9 O2 q
变成长度为n-1的线性表/ X1 [ X, P9 R/ f/ A! `5 z, j
(a1,…,ai-1,ai+1,…,an)2 i3 ?4 }. ^- A% E8 f9 }
数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。( d+ D( F' i" Y
一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
; J3 c: S: ^+ p7 V9 \, [* t* I9 [" `Status ListInsert_Sq(SqList &L,inti,ElemType){9 |" Y5 R& {$ z2 ]4 u
//在顺序线性表L中第i个位置之前插入新的元素e,
" d; H+ @' v u/ q d v% H1 n//i的合法值为1≤i≤ListLength——Sq(L)
. R ~- \6 ]' Bif((i<1)||(i>L.length))returnERROR;//i值不合法- D9 H: I1 |" ^: M% K- \, u/ a
P=&(L.elem[i-1];) //p为被删除元素的位置0 {) ~$ P; o. y. g8 f, B
e=*please //被删除元素的值赋给e* E8 I( w8 p1 E' U! w
q=L.elem+L.length-1; //表尾元素的位置# p8 U0 o* l( w+ h" n& f
for(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移
, S4 h; X' k/ Q' [& g--L.length; //表长减1
" c6 `0 e2 B4 Kreturn OK;2 O$ x. w ~: Y* I8 W# m
}//ListInsert_Sq |
|