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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
% V# M1 b, D1 r) Q1 G% M假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
1 _) p+ d' s4 i% w- `为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
" L0 A2 p0 `8 n- ls->next=p->next;p->next=s;
# C6 j( g4 u: m7 v反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
( j0 M1 h$ k) b% W+ g+ ?p->next= p->next->next
1 F( `& V9 g6 ~" L! f4 v: R1 y可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。6 P0 y) N0 _' ~  q0 j( ~
Status ListInsert_L(LinkList &L,inti,ElemType e){
4 t7 ~/ M% v9 T0 |//在带头结点的单链线性表L中第i个位置之前插入元素e/ K. U1 j& F, s0 t4 P* n
p=L;j=0;6 I+ U" x+ a3 l: F# T  i, s6 V* D
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点/ ?4 N" U' f7 |
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1/ ?' t" u3 a# f3 R9 ^
s=(LinkList)malloc(sizeof(LNode));//生成新结点. F) i! ?8 B5 N3 e. v) A% A
s->data=e;s->next=p->next;          //插入L中
- }! O* K: T6 }8 Ap->next=s;) v. r' l% V! D" g) Y$ |: U
return OK;1 H  W4 [9 T# q3 y2 f4 i2 z/ e
}//ListInsert_L
( O3 `8 m. T+ `void ListDelete_L(LinkList &L,inti,ElemType &e){
6 ]) B& R$ |! [" [( E: C. f6 F//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
% W9 t6 Y' q$ x! Gp=L;j=0;9 f) n! `/ i5 a: M& M
while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
9 P0 |0 b1 }7 E- G1 U' T" zp=p->next;++j;
7 P  {& J# ?/ G}
" k* |  l) e  O- W1 O3 Qif(!(p->next||j>i-1)return ERROR;//删除位置不合理" @2 ]/ ~( b* X. L/ ^! m* w: [3 [
q=p->next;p->next=q->next;  //删除并释放结点
$ K1 o6 G( E6 C( [5 J& }e=q->data;free(q);
' i+ I: [/ ]9 g" ]8 Yreturn OK;
% g: j0 e4 j9 u4 M. H1 _}//ListDelete_L

该用户从未签到

4#
发表于 2016-9-12 14:20 | 只看该作者
支持楼主!谢谢分享!
; i0 a7 A1 F' r

该用户从未签到

3#
发表于 2016-7-14 15:01 | 只看该作者
感谢楼主分享!!!+ q- l& `1 M, y0 }8 s! @' x, B

该用户从未签到

2#
发表于 2016-7-14 14:31 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈, O% ?" M; Y- c3 ~* b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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