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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?. I7 Q+ S2 e6 x) A% d: }
假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。
0 ^- w* S6 ]& v6 A为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为. K& T5 M- b. H  a/ o+ L3 C
s->next=p->next;p->next=s;7 b8 M2 H* k# b  p# g
反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为3 l) V% l8 A# w" w
p->next= p->next->next- C% k. u5 u6 |! n- z
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
+ r+ r) Q4 \" o$ a% [Status ListInsert_L(LinkList &L,inti,ElemType e){5 l# C$ k- J7 G( q) L) ?5 z
//在带头结点的单链线性表L中第i个位置之前插入元素e9 r6 l5 w& l: D4 {7 {5 Q
p=L;j=0;  o) `* E3 b4 o
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点: L$ ?" F& A- L; s1 _6 {
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+11 R5 D+ V* f8 @# G
s=(LinkList)malloc(sizeof(LNode));//生成新结点: a1 H4 Z  b. q" R
s->data=e;s->next=p->next;          //插入L中
% V$ l0 I3 O9 ]: gp->next=s;# P+ r3 ]' [# ~& C1 W
return OK;
" M+ ~* @( c" K) w6 ], u}//ListInsert_L: D* i8 v* p* A9 e" i
void ListDelete_L(LinkList &L,inti,ElemType &e){
9 w) Y3 t# k- M* ]2 z% @//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
: d& h% }) ^* y1 @p=L;j=0;
7 t* C5 j3 O. K3 o  `% q8 H% C- awhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
& z8 X' m( \% dp=p->next;++j;
8 C6 C2 @& q' r; t}
; ]+ m0 d- x  q5 `* z1 [if(!(p->next||j>i-1)return ERROR;//删除位置不合理
" X1 }: d- H% L7 Jq=p->next;p->next=q->next;  //删除并释放结点
0 ~. M. V0 z9 R$ He=q->data;free(q);
; ?! V1 U2 \) Z) k: Yreturn OK;9 p0 d. k& R0 M! x1 m9 ^2 H
}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈$ `+ L. U9 d4 g3 j0 {

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
7 Z7 F7 Y- w9 a( {$ F) _$ J

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
1 i$ w8 n7 E# a

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
  ]% _% M7 l0 W

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
# R: z( t* y0 S# d: {# _+ \' K/ D& O

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~) J& ]/ h7 ?  k% l# w' x0 Q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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