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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
8 E; W  Z$ ]" f5 _6 K假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。4 D1 _5 k! x# ~- L# B
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为7 o6 A- X) D: c. s: S; }3 P  r& m
s->next=p->next;p->next=s;0 Y: \5 y4 K, I8 A  O% C; G" G7 M
反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
* \- u' X2 N$ N7 i; m, A+ w# yp->next= p->next->next
- s0 {: \; k7 `! Z" L可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
6 n# @2 L0 i  |. W; z9 Y$ vStatus ListInsert_L(LinkList &L,inti,ElemType e){+ M- @- Q5 J: I6 @; o
//在带头结点的单链线性表L中第i个位置之前插入元素e9 L0 q# h' `1 w
p=L;j=0;8 Y) H, X; C7 B. h/ `  |! h4 ]: |
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点
1 S* J# Q) A- ~% i' o& [if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+16 i. n+ m2 o9 W4 A* G. }4 K
s=(LinkList)malloc(sizeof(LNode));//生成新结点
( Q& t* l- R0 Q0 R  d9 Ms->data=e;s->next=p->next;          //插入L中
. D; \+ v% Y, P" jp->next=s;( J8 m! `  Q6 H& w  b& }
return OK;/ E" g- [" y1 p4 @; ?
}//ListInsert_L
' M/ C/ k) F. ]void ListDelete_L(LinkList &L,inti,ElemType &e){
9 j- Y2 G+ a% ~6 C( `; F! R//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
& F; E' u8 ?: s: J4 rp=L;j=0;* r7 z1 F& d: e& `  i4 [/ g* N
while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱9 j0 M' I3 ?2 x# P, V+ R
p=p->next;++j;
9 y0 c, v* y7 K5 e4 \}. ^/ [0 {" g. G( u8 z
if(!(p->next||j>i-1)return ERROR;//删除位置不合理# m: B! s9 Y7 Y* U6 C$ B' E7 B
q=p->next;p->next=q->next;  //删除并释放结点( X+ J9 l0 {7 P# b, V3 _8 ^* \1 }
e=q->data;free(q);5 [. F. j5 B8 d* q  g" F3 T
return OK;/ _9 E# N+ D0 l# \9 V) J- h' V
}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
, I% ?1 O4 y: P

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
7 V# l& y! N3 \; T9 h

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
, U1 }! Y. c/ K, c2 a. ?

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!8 W; n9 U6 n1 D) U

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
9 r2 e% _) A' Y

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~
9 t+ o' ], b4 ?# S/ U7 ]9 K
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-18 10:35 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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