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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
/ ~+ a, Z9 ]% [  q: @1 D假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
/ P4 ~3 e" }7 v" e  i! j; r/ |2 R为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为/ T7 l2 Y' U9 H6 v' @
s->next=p->next;p->next=s;
) ^2 d8 b5 @/ f反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
# i1 i0 y: S$ D1 Ap->next= p->next->next
6 H9 D5 m- h+ A" x2 j可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
8 o# {+ J5 ^' U2 ?) u$ gStatus ListInsert_L(LinkList &L,inti,ElemType e){; z% \* Q$ a8 L7 T  _  o
//在带头结点的单链线性表L中第i个位置之前插入元素e# D- _, o. Q- k4 @* ^1 B
p=L;j=0;! b' s: @- c: q0 G
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点- k  p5 p9 [- f! W& [! C7 `* C. k. X
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+12 Y  \/ z" c& l) Q# v) e
s=(LinkList)malloc(sizeof(LNode));//生成新结点
' ?5 O* @& ?2 e, is->data=e;s->next=p->next;          //插入L中: c, k& u9 Q1 V3 N! B/ \; j" z
p->next=s;
' d% M1 L  F# T0 Creturn OK;
9 `+ A8 r3 S) s  ~4 e7 K3 B}//ListInsert_L
4 x  F3 M* ~  g" o. G& n7 y; P- nvoid ListDelete_L(LinkList &L,inti,ElemType &e){
' G) r+ `# @0 \8 }6 q//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
! J3 `/ a; f: _3 n5 h7 V- ~, \3 i8 yp=L;j=0;
: X" ?9 m7 e; w9 ~/ Qwhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
$ _$ T# d. v+ N; U1 E5 ?4 i$ l7 Np=p->next;++j;, |% ^5 D6 B3 Z1 C. |" C. G( l. |
}
, o) v7 x2 Z1 \- Gif(!(p->next||j>i-1)return ERROR;//删除位置不合理
" R* ^7 B5 Q: u% `/ E8 P! Dq=p->next;p->next=q->next;  //删除并释放结点/ d( a% m: m" Q
e=q->data;free(q);
* Z2 M. q% E, q: B. h& [$ rreturn OK;
7 y1 q' }  F( j% t8 ]. ^7 B0 ]}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
, E: A5 G6 q7 }- y

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
! P, X8 H* l% p9 D

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
' o5 ^9 I% x& g2 f) B

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
% Q' Z4 t' i* G# v8 g4 D+ s* _

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
  n% z* K* m' V% K$ z, K& K0 d& [

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~$ ?4 m) X4 W  Q" W- O
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 04:18 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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