|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
线性表的删除操作时使长度为n的线性表
" @2 Q$ C/ k* Q(a1,…,ai-1,ai,…,an)1 ~7 R, T* ^* k
变成长度为n-1的线性表
8 w! q, p$ u: p! I' Z. ](a1,…,ai-1,ai+1,…,an)
9 B; m9 n! Z1 {: W数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。
" @, h) r1 q+ e3 p6 A一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
3 s2 t$ y9 I( D. bStatus ListInsert_Sq(SqList &L,inti,ElemType){
( T* k+ a9 D: S$ W7 D//在顺序线性表L中第i个位置之前插入新的元素e,
" ^. w" s& U5 ~; b8 |//i的合法值为1≤i≤ListLength——Sq(L)# [3 f9 a2 B0 O
if((i<1)||(i>L.length))returnERROR;//i值不合法
& o9 g; _9 r) p& _7 NP=&(L.elem[i-1];) //p为被删除元素的位置8 R7 w! u/ s: j. \5 O0 h
e=*please //被删除元素的值赋给e
. ~# ]: q% d2 ?* {2 T5 Eq=L.elem+L.length-1; //表尾元素的位置8 r$ A8 d! d. O$ @- K
for(++p;p<=q;++P)*(p-1)=*p-1 //被删除的元素之后的元素左移$ B( Q7 o$ t0 Y# P3 q2 `. \$ d
--L.length; //表长减19 S1 D, J' f5 r+ }9 I$ \# E
return OK;
. X5 C2 y$ U5 D" A+ I" B$ \}//ListInsert_Sq |
|