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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
. r! a: Z) w+ Q+ x2 p& g/ K* `* B/ z假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。4 n. v9 ~$ O0 d# X8 Y
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
. ?  j, Y" E4 `) N, H/ Rs->next=p->next;p->next=s;, B$ P9 s# m0 q1 t
反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
5 E- \8 t  ^5 k/ K' N4 a# m* m3 bp->next= p->next->next
" V( a' @2 k' x7 P: i: h( m" E可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
* V8 S  R5 L6 h4 RStatus ListInsert_L(LinkList &L,inti,ElemType e){- \4 G! p" N# g+ D7 M7 u
//在带头结点的单链线性表L中第i个位置之前插入元素e4 D* `; v& J9 d, S7 r7 L' F" I
p=L;j=0;3 e5 U. J2 H( W! ^
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点* ~# D2 V% `8 P
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1
. F3 w2 o* m% N- C" \0 U' `; _s=(LinkList)malloc(sizeof(LNode));//生成新结点) d! \4 L! M- j
s->data=e;s->next=p->next;          //插入L中
6 M) H" l! o7 B/ B4 C) Qp->next=s;( L" e. S; w+ {! ]2 a
return OK;$ s; V. k2 H$ ]
}//ListInsert_L  ^4 |; F7 h9 u6 M! A
void ListDelete_L(LinkList &L,inti,ElemType &e){. R* F* v+ U2 h  @+ y+ y: x
//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值- ]3 R& {# L' I# F) r
p=L;j=0;
# F0 h) x; q! f" o  Gwhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱9 r9 t# v" O. @% m+ o$ p
p=p->next;++j;
$ K; C( b9 J9 x6 V- A" Y5 c! Z( P2 d}
* U3 |, c( ~; U0 g( ~1 a: T$ y8 ?if(!(p->next||j>i-1)return ERROR;//删除位置不合理9 U0 U* T; t! t; A& W( w; J
q=p->next;p->next=q->next;  //删除并释放结点/ x/ x) Q. V$ {7 _$ w8 F5 k; d
e=q->data;free(q);
, z: c9 m7 P3 \7 [6 Zreturn OK;
9 f( S$ R# g9 P  d6 g}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈2 L: H& `: y! C2 @/ {7 t/ U

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
! v  g6 L6 [: [! `

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
4 c0 S6 u' s- i2 N2 b

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
! ~! m' c$ `' l

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!- o( w3 F( W" h$ I! ?, v1 w9 b

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~( E+ u, l: l8 X3 }. w1 M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-31 04:15 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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