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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
! S7 h4 z  P8 p3 G8 F' P假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。# C* p/ ?) Y/ i
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为; |  G3 c9 h  i1 h% ^% l3 }7 a5 a
s->next=p->next;p->next=s;
# n% R/ U: w. r反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
5 t. C1 I; }2 ?) i$ a3 \p->next= p->next->next
' h7 S/ l' D; t* A, q+ K. H可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。
3 {5 z! ?  ~. bStatus ListInsert_L(LinkList &L,inti,ElemType e){# E8 u/ k2 m3 Y* p3 h% h$ {
//在带头结点的单链线性表L中第i个位置之前插入元素e4 e4 Z7 W5 A9 x, v9 R& D& ^
p=L;j=0;
" k2 e& Z& H( g( qwhile(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点
' s5 r4 d/ q1 ?. P" u3 Oif(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1
5 b& @! V( n- Z: P/ Y( `s=(LinkList)malloc(sizeof(LNode));//生成新结点+ s3 C  m, X( p; S& K
s->data=e;s->next=p->next;          //插入L中
6 g6 l, ~3 \8 A; h' xp->next=s;. a2 u4 ?; P4 k( R/ `6 O
return OK;
4 l" _0 ~- y  H6 J  H}//ListInsert_L
0 x/ L# w2 n6 G: p, l4 tvoid ListDelete_L(LinkList &L,inti,ElemType &e){
" `. E8 b+ N$ G1 E+ D" ?//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
, Z( A) G+ z0 |p=L;j=0;
! \  _( }3 U4 H. m5 v) x9 ^while (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
( ?0 C2 U+ Q0 W) \p=p->next;++j;. C$ S$ i4 d8 T( x4 O
}
: R3 R/ W  T4 G  G% }if(!(p->next||j>i-1)return ERROR;//删除位置不合理
6 h9 r# A" O9 F4 N  y9 Yq=p->next;p->next=q->next;  //删除并释放结点7 i) X, x. N) l3 D/ ^# Y2 N
e=q->data;free(q);
' L* m* U9 k$ i  g4 ^/ v# n  t, T: X/ Hreturn OK;* D2 A  j, j5 X$ M4 g
}//ListDelete_L

该用户从未签到

2#
发表于 2016-8-11 14:38 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈! }' `' k4 x, Z1 ]( ~

该用户从未签到

3#
发表于 2016-8-11 14:54 | 只看该作者
支持楼主!谢谢分享!
7 s9 L4 C, {& K) h: b9 j0 w! B

该用户从未签到

4#
发表于 2016-8-12 11:42 | 只看该作者
支持楼主!谢谢分享!) P6 v$ ?' _. H" X+ G- d

该用户从未签到

5#
发表于 2016-8-13 10:45 | 只看该作者
支持楼主!谢谢分享!
0 o( V3 j' Q3 }* h: T

该用户从未签到

6#
发表于 2016-8-15 15:57 | 只看该作者
支持一下,很不错哦!
" n" Q* E8 f9 L, H1 l

该用户从未签到

8#
发表于 2016-8-17 14:03 | 只看该作者
谢谢分享,必须赞一个~
$ T# z5 o8 x* l$ h2 |+ f1 D: T1 g
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-6 20:46 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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