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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?- t4 T$ B- t& W% r
假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。6 d) `/ q7 Q  r- b
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
  t# d% W/ c8 vs->next=p->next;p->next=s;
4 v1 l7 C+ p: R( E$ D反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
6 r4 R( h& O2 _) ~- w0 c( ip->next= p->next->next
. _; s* Q7 [& N; j5 |: c! S6 N8 J" r# G6 |可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。% @3 ?/ E5 r+ P- ]% V6 b
Status ListInsert_L(LinkList &L,inti,ElemType e){3 Z' t/ K: _+ n3 N- S7 V
//在带头结点的单链线性表L中第i个位置之前插入元素e
. D  P+ M1 t( W; ep=L;j=0;) [( X( r+ u/ I: w5 B
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点
+ [7 l, X$ M' ^# J. j1 o; [. Oif(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1+ J1 C( e* e) `4 M( B7 m
s=(LinkList)malloc(sizeof(LNode));//生成新结点
8 \+ w7 w1 W: c/ us->data=e;s->next=p->next;          //插入L中
8 R" u! O3 _; O9 k4 Xp->next=s;
6 [5 B6 ]' r- f& F7 T4 J2 Nreturn OK;
: M% {3 F$ j, n4 |. w, y( C( E}//ListInsert_L
3 o  j: z2 S) k) m: ^/ hvoid ListDelete_L(LinkList &L,inti,ElemType &e){
6 K( A1 Z2 z5 G7 Z+ f# y6 U//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值. l( P+ K/ _( X( F0 l
p=L;j=0;: z& E$ o9 F$ _
while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱' V* g- q* ]) t, y/ `  ^0 @' d
p=p->next;++j;7 ~8 I& S8 T! }6 u) X
}
7 U3 q8 x$ R" Q2 Fif(!(p->next||j>i-1)return ERROR;//删除位置不合理+ T3 V6 @+ p* m, H5 u+ y9 e
q=p->next;p->next=q->next;  //删除并释放结点
0 R* E8 r. Z( |# Q+ q, s8 ?e=q->data;free(q);; |' j+ J9 p  O; \: M, T. m* Y3 W
return OK;
; W. O# R" P- K" X/ L$ E}//ListDelete_L

该用户从未签到

2#
发表于 2016-7-14 14:31 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
, l, l0 S9 P# ~: X9 ?; [3 ?

该用户从未签到

3#
发表于 2016-7-14 15:01 | 只看该作者
感谢楼主分享!!!5 d& k5 {: l- l

该用户从未签到

4#
发表于 2016-9-12 14:20 | 只看该作者
支持楼主!谢谢分享!# n' \3 i6 k# N% ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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