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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?8 d5 j7 U$ u+ |. U+ H, B, p. C
假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
9 n- X7 M; H: C1 ?为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为/ I" O) J! r: x, n9 `0 i# ?
s->next=p->next;p->next=s;% f5 I6 h  f2 U
反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为3 d( C; o( }$ C
p->next= p->next->next  B& ]- \; \1 q& d
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。  o& S1 s, Q% p
Status ListInsert_L(LinkList &L,inti,ElemType e){
& G6 A2 A9 A: r4 R: U5 o5 R% [//在带头结点的单链线性表L中第i个位置之前插入元素e/ R7 U* y0 `- y0 f
p=L;j=0;
! I/ f' F; s% U3 ywhile(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点
5 c( G2 V0 s( Xif(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1$ i' L- K( L; a+ O
s=(LinkList)malloc(sizeof(LNode));//生成新结点
' u0 W8 f1 j+ n; Q# v2 M4 w( Fs->data=e;s->next=p->next;          //插入L中8 G' e; n' r$ J) Z5 A& P& G- c0 b
p->next=s;
9 g; I; r$ ~' N" p" Creturn OK;
/ b8 u5 L: i# o% {4 F8 O}//ListInsert_L
1 Y9 a  O9 N4 F7 b* ~void ListDelete_L(LinkList &L,inti,ElemType &e){# e+ K4 k% B% x" p! ?
//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值5 O" N& {1 l7 C( g
p=L;j=0;
$ s# n  \6 v# L# f) nwhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
0 L1 N# Z6 g$ U+ ]p=p->next;++j;; w: }& a5 ^( f. [% Y" f
}# r% y1 `$ U, k1 F) b$ d: ^0 V
if(!(p->next||j>i-1)return ERROR;//删除位置不合理2 v! @. M- U: F$ |
q=p->next;p->next=q->next;  //删除并释放结点
" t  V6 @, ]2 M( g9 v7 b1 ]e=q->data;free(q);
( S# g& N# b, v" V) ]8 J$ W! |5 F6 j# dreturn OK;
4 W& U4 ]- _( V; k, K+ L}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈+ H* j1 ^" G: S+ y4 ~5 C

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
& R6 ^3 c" R% d7 w4 r

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
/ x1 {% _' E" X% E

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
; [3 W' R( b6 s2 M9 C/ r" t9 u8 [

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
: \1 _. I8 r( o8 U

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~
* D+ l7 D$ t2 m, p5 F
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 19:59 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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