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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
# [/ y( x2 L0 e! Z* i% a假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。8 c  z4 L6 W& @% h0 W* _# A  t4 F& q
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为8 G5 y. S  y4 i& I0 q+ x
s->next=p->next;p->next=s;1 s( ?- c. u' H* {
反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为1 a7 F1 f& [+ U+ U8 Q/ i* M
p->next= p->next->next5 O; J, D. ?8 c  {. B+ Q: A, y
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
( v( L3 X3 A( a( A8 @% iStatus ListInsert_L(LinkList &L,inti,ElemType e){. B! ~# A' ^/ w/ N: N0 x+ [5 c
//在带头结点的单链线性表L中第i个位置之前插入元素e9 e% h% Z4 D, x: z9 B6 V
p=L;j=0;  x; v; ]( \" j/ H, w5 E
while(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点
! h0 o9 k: w9 }+ i  ~! `# Rif(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1
2 K/ F: M, R  Y2 |7 k8 T7 n- Ws=(LinkList)malloc(sizeof(LNode));//生成新结点
, j5 {, J+ q6 R( A: I5 ?& X9 js->data=e;s->next=p->next;          //插入L中. e( _! b- P' R7 b0 F5 U8 G9 y
p->next=s;
2 ~' Q( z% S7 E; Hreturn OK;
0 f2 m' P) F1 E* u}//ListInsert_L
& U3 w  e4 Q# w0 X% rvoid ListDelete_L(LinkList &L,inti,ElemType &e){
& R0 [- ^# a6 _9 }//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
- Z! @+ G/ i- c0 H0 B" xp=L;j=0;+ {! L" ?0 g3 V& }$ S' `
while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
! L% s, K$ q8 D( ^p=p->next;++j;
/ j" _) b! q8 e' C* W$ B) ~}+ a+ M+ L* y1 ]5 K% f6 [
if(!(p->next||j>i-1)return ERROR;//删除位置不合理+ a9 A0 t8 t! c. V- S
q=p->next;p->next=q->next;  //删除并释放结点* ~0 ^; D- _# {5 P( |! c# }$ P
e=q->data;free(q);! F% N, q+ L; j) m3 j* \
return OK;! o6 t) X6 T' P
}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈* n6 [+ J8 A! w8 s' {

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!% ^5 N2 {2 u9 ?; M5 \

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!
1 N! D% h2 m1 A7 X% L

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
5 I+ A4 e- L* Z, O0 C7 Z  H, C

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
/ x& S: f8 z8 Y2 H" Z8 s

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~
7 c! e5 U: T7 V& ]/ T5 s5 k
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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