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* g
Status 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, v
if((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; @/ q
q=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