找回密码
 注册
关于网站域名变更的通知
查看: 553|回复: 9
打印 上一主题 下一主题

单链表的插入和删除

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-8-11 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在单链表中,又如何实现“插入”和“删除”操作呢?1 \7 Z. T  M8 X$ }9 E3 |
假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
3 S, b" j( |( X! U$ y; C为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
/ w0 S7 [, N' C; ?) [s->next=p->next;p->next=s;
4 r9 I# A7 k) Q, `) z" `反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为9 J, R1 {. M$ F
p->next= p->next->next& y$ K: y2 Q9 K4 M
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
* c# F# y  d# e" H, T7 X4 x+ B8 rStatus ListInsert_L(LinkList &L,inti,ElemType e){
- M5 X: o1 f) R( n/ s//在带头结点的单链线性表L中第i个位置之前插入元素e% @. u  L2 [! p& F* N
p=L;j=0;9 }3 b  o. W7 ~) S) _, V- R
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点- o8 h, p! t: \/ p
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+17 G1 z, r/ o  r# w$ k( v
s=(LinkList)malloc(sizeof(LNode));//生成新结点
/ l3 p8 P7 J1 B. G: u* _1 O+ fs->data=e;s->next=p->next;          //插入L中
, k1 B9 c7 t/ C. _1 @& cp->next=s;/ G" k0 t& s# C# i. q3 t1 s
return OK;
" O: m7 G+ q( e( p, ?- ^}//ListInsert_L% I* t, b3 T, o8 P" I5 c% r
void ListDelete_L(LinkList &L,inti,ElemType &e){
6 h5 G5 o, _+ ]8 J1 c! W% j0 f//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值7 @% h# b& F& ^8 S+ H  l
p=L;j=0;
' w1 v! Z' K4 h: t( nwhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
' e8 u6 v0 Y  ~; j$ G* Op=p->next;++j;
0 m+ K- y1 |6 S; z7 @% N. k" H}  n" g2 T' w) s+ g6 y$ _) J
if(!(p->next||j>i-1)return ERROR;//删除位置不合理
$ c2 z' u. ~% P3 t! @2 oq=p->next;p->next=q->next;  //删除并释放结点
6 ~' ^" `! ]: b! ae=q->data;free(q);" v: N' ?3 j- p! q  f, U; G0 I
return OK;
8 r8 \* n# u- a0 a$ I* b}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
% q# V- p* B* d. b/ E$ {6 M$ ~/ }

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
2 l3 I* a0 p( l8 C. s  s3 ^

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
4 X" W# \8 i& |' M* f9 G3 P3 V- E

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!% b) N$ r6 \2 i: H$ {( c

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
4 Z5 E, B- t2 s2 x& i  M

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~' S* |' ^9 G- T" V: Q3 U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 18:51 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表