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

单链表的插入和删除

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在单链表中,又如何实现“插入”和“删除”操作呢?
$ a% W9 k$ I# N% s假设我们要在线性表的两个数据元素a和b之间插入一个数据元素x,已知p为其单链表存储结构中指向结点a的指针。; ~$ N# s2 O/ R7 S: P, R- z2 x" R
为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向结点x,而结点x中的指针域应指向结点b,从而实现3个元素a、b和x之间逻辑关系的变化。插入后的单链表所示。假设s为指向结点x的指针,则上述指针修改用语句描述即为
4 e" U& a7 F9 p+ ]. Gs->next=p->next;p->next=s;
3 N  m+ B; F; ]$ `* F' e反之,在线性表中删除元素b时,为在单链表中实现元素a、b和c之间逻辑关系的变化,仅修改结点a中的指针域即可。假设p为指向结点a的指针,则修改指针的语句为
9 H6 M6 t- N$ F( S& ]p->next= p->next->next: h/ I, N4 U2 m- k5 ?& l8 B/ l) N
可见,在一直链表中元素插入或删除的确切位置的情况下,在单链表中插入或删除一个结点时,仅需修改指针而不需要移动元素。/ Q2 g/ t/ r+ E. k; ?  g" L
Status ListInsert_L(LinkList &L,inti,ElemType e){5 Y0 a: l& h; m  V
//在带头结点的单链线性表L中第i个位置之前插入元素e" R" @5 U: _6 w, V8 J  K" x
p=L;j=0;
7 ^% H- B( `) S- O& u1 m- Zwhile(p&&j<i-1){p=p->next;++j}//寻找第i-1个结点9 O2 ^/ F5 Y6 p" C8 R
if(!p||j>i-1)return ERROR;           //i小于1或者大于表长+1$ A1 n+ M4 `( S5 V5 \
s=(LinkList)malloc(sizeof(LNode));//生成新结点# o7 l9 R3 X$ _) o7 w
s->data=e;s->next=p->next;          //插入L中
3 G) b3 N. A9 t8 i- Y' dp->next=s;0 U  f4 ?+ {; n7 u% N  C: [7 E$ c
return OK;
; Y% |, e* |6 ^- j! v( d& _( W}//ListInsert_L8 v' Y$ F4 Z+ I% Q) ]# @
void ListDelete_L(LinkList &L,inti,ElemType &e){
4 t8 Q* l4 i9 V. W//在带头结点的单链线性表L中,删除第i个元素,并用e返回其值
2 [2 x  j6 a; D% N: `8 mp=L;j=0;
! Q3 G) S; z7 |2 }& F& Gwhile (p->next&&j<i-1){//寻找第i个结点,并令p指向其前驱
; v8 v0 G) D) ?% n5 T- W! {5 Bp=p->next;++j;0 ~2 A* E4 R9 r% `; b; |, F- x
}8 s* }: ?) ]7 \5 N9 f
if(!(p->next||j>i-1)return ERROR;//删除位置不合理# W) y5 k4 v. X5 B# ?5 R* [
q=p->next;p->next=q->next;  //删除并释放结点
, _9 Q7 K3 |# X% B  ve=q->data;free(q);
5 a  i  T5 u* Q' sreturn OK;
+ P+ Q' u- Q2 ?, a$ M& ~}//ListDelete_L

该用户从未签到

2#
发表于 2016-7-14 14:31 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈6 h  e6 `5 \7 A2 A  \

该用户从未签到

3#
发表于 2016-7-14 15:01 | 只看该作者
感谢楼主分享!!!9 g& q6 h- j$ @- y, r

该用户从未签到

4#
发表于 2016-9-12 14:20 | 只看该作者
支持楼主!谢谢分享!: x, A* X4 ?: O, p0 m" M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 00:44 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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