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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?0 ]2 ?7 _* L; W9 ~& H  p) W$ N! Q
假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
6 [, y2 Q4 r. f, R1 \6 i6 o为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
, J4 T- Y) v9 j4 `! @& q, ms->next=p->next;p->next=s;
* O- v4 o4 n; i; y反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为! W5 \# D. Y3 k& Y0 ^; }: X/ k
p->next= p->next->next: `2 G/ T5 y+ {  P& ?6 i+ }0 z
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
3 L6 \2 q6 m2 L# S- K1 ]Status ListInsert_L(LinkList &L,inti,ElemType e){4 M: ]% x; P" }
//在带头结点的单链线性表L中第i个位置之前插入元素e  \+ C# ?2 Z+ C
p=L;j=0;
) \6 Z/ \) H! i' C* u  awhile(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点% y/ s/ b) [* L
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1' {  S: z' b4 y) i! o
s=(LinkList)malloc(sizeof(LNode));//生成新结点
1 ]& E, F& ^  H1 O. Cs->data=e;s->next=p->next;          //插入L中
7 E5 `7 d0 h0 m) ~1 Ip->next=s;% l9 R( l& Q' R8 K" [, p5 @
return OK;
5 w8 O& \: z4 j! F8 @}//ListInsert_L
( b7 G" D" Z! ?, B& z" p: U; ]void ListDelete_L(LinkList &L,inti,ElemType &e){
" N; n, }1 H/ @: m  l8 R( a//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
' ]6 e1 {" W/ p4 }! {# `p=L;j=0;  j2 V% r3 ^7 R4 c: I3 _& O
while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
& I; V+ ?1 o% N0 Dp=p->next;++j;
1 H4 J6 V$ n* d  ?9 [8 e: K& M6 H}
3 k) n, g$ R% f8 wif(!(p->next||j>i-1)return ERROR;//删除位置不合理
! i, h+ w- D- n/ j& t/ }4 Tq=p->next;p->next=q->next;  //删除并释放结点, N: q* w1 m; r
e=q->data;free(q);
3 }2 t( Z  `1 Q' dreturn OK;
) c& I* h% b  a4 @9 [}//ListDelete_L

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~/ i8 r. m$ e  c

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
2 K' w3 Y; Z6 Q; |2 ^' [" M

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!& F) G0 G$ C4 |

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
3 d! x8 i+ b  i& ]

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!. ?# ?3 p8 v9 L! Z9 k0 k$ I. J4 |

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
) B) @+ }2 q& i/ ]- E! \& F( c; d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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