|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表! n. v# @/ g3 `
(a1,…,ai-1,ai,…,an)
; a% h4 _; \2 o/ T A1 \( a变成长度为n-1的线性表# E4 X# ], x$ H' Z. y: H) O
(a1,…,ai-1,ai+1,…,an)) ~9 @, B% ?( O* K! n4 m2 q
数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。6 u( p6 M9 z. D7 `, w$ Z* i# D# ?3 A
一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
6 p9 ?; S! o ^8 o1 e0 e4 fStatus ListInsert_Sq(SqList &L,inti,ElemType){" F# N% |: ^- J: u
//在顺序线性表L中第i个位置之前插入新的元素e,
. l0 G& K8 F- M" R1 m//i的合法值为1≤i≤ListLength——Sq(L)
% l6 t# S2 P. Jif((i<1)||(i>L.length))returnERROR;//i值不合法
, N. G2 X1 `8 L. X HP=&(L.elem[i-1];) //p为被删除元素的位置) W. S7 A$ m/ W
e=*please //被删除元素的值赋给e( A" Z( O% u" I. V6 n Z2 ~$ V3 B: T
q=L.elem+L.length-1; //表尾元素的位置6 r4 b! q3 f% C! v
for(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移
3 v- t+ s; ?: [2 I--L.length; //表长减1
" w- i% z8 F2 P8 O. L) mreturn OK;/ B- ^* S* Z3 g# T9 g. G
}//ListInsert_Sq |
|