EDA365电子论坛网

标题: 线性表的删除算法 [打印本页]

作者: 85486952    时间: 2016-7-13 16:04
标题: 线性表的删除算法
线性表的删除操作时使长度为n的线性表$ E+ N  m2 @3 w# \8 N* M
(a1,…,ai-1,ai,…,an)
4 p# z1 w( v( ]! e7 f. V% @变成长度为n-1的线性表* g4 |4 G& v  f0 O0 F1 Q
(a1,…,ai-1,ai+1,…,an)4 s  I& B. k: X
数据元素ai-1、ai和ai+1之间的逻辑关系发生了变化,为了在存储结构上反映这个变化,同样需要移动元素。为了删除第4个数据元素,必须第5个至第8个元素都一次往前移动一个位置。
1 w; ~/ Q  p& [7 Z: S一般情况下,删除第i(1≤i≤n)个元素时需要将从i+1至第n个元素一次向前移动一个位置
6 g5 \1 }- J8 O; w7 Y1 T! I* gStatus ListInsert_Sq(SqList &L,inti,ElemType){0 X' B$ }- I* m7 X5 ~6 E* _
//在顺序线性表L中第i个位置之前插入新的元素e,
$ k/ }+ U: t; b- |5 W3 p1 S//i的合法值为1≤i≤ListLength——Sq(L)
) Q. j+ T1 e: K  A# g, vif((i<1)||(i>L.length))returnERROR;//i值不合法
+ M' h5 K0 R0 N" M) J( W7 \P=&(L.elem[i-1];)                              //p为被删除元素的位置5 I% q$ K- d% Q" L4 \" H  a
e=*please                                                 //被删除元素的值赋给e
8 [' p( l+ y8 J0 G. R; @/ qq=L.elem+L.length-1;                         //表尾元素的位置/ c( m: [- _6 {$ Y# u; G4 H8 x
for(++p;p<=q;++P)*(p-1)=*p-1           //被删除的元素之后的元素左移/ J' y  C& G/ [% I$ `+ L
--L.length;                                                //表长减1$ l& D8 f, s6 M& C& v! Q9 Z2 s
return OK;7 p4 e* w5 {/ o! k( S3 j: v
}//ListInsert_Sq
作者: jerryli    时间: 2016-7-13 16:59
看贴学心得,回贴是美德0 \7 E: T; r  P3 u9 ?- g

作者: sunygd    时间: 2016-7-14 14:28
谢谢楼主,一步步来,学习中……
: u, K4 N. F6 Q/ g0 _; ?
作者: hasky    时间: 2016-7-21 18:36
楼主辛苦了!3 S5 b0 E6 a+ s' o$ N" q4 _# S

作者: helendcany    时间: 2016-8-1 15:18
看贴学心得,回贴是美德
) v: C$ h' E+ u) W  a2 P




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2