【1】3. 线性表的链式表示_单链表的插入和删除操作

目录

1. 按位序插入_带头结点

2. 按位序插入_不带头结点

指定结点的后插操作

指定结点的前插操作

3. 按位序删除_带头结点

指定结点的删除


1. 按位序插入_带头结点

这里讨论时 假设单链表中只有4个结点。

注意:这里和顺序表不同的地方 =>  对 i 的合法性用了一个 if 判断,以及 while 循环结束后对是否为 NULL 的判断。  因为链式表和顺序表不同点之一在于,链式表不支持随机存取,只能通过 next 指针遍历查找。

 

 

2. 按位序插入_不带头结点

 

考试中两种情况都会考察!   

 

 

指定结点的后插操作

 

然后代码就可以修改成:

 

 

 

指定结点的前插操作

 

 

 

 

3. 按位序删除_带头结点

ListDelete(&L,i,&e):删除操作,删除表L中第i个位置的元素,并用e返回删除元素的值

 

 

指定结点的删除

要删除结点p ,还需要修改其前驱节点的 next 指针。

又由于单链表没办法往前检索,所以没办法找到其前驱结点。除非像上面代码,传入一个头指针,从链表头一次寻找p的前驱结点。第二种方法类似前插操作的偷天换日!

 

 

但是如果要删除的是单链表的最后一个结点的话,上面代码中的 p->data = p->next->data 会出现问题。这种情况只能从表头一次寻找,知道找到其前驱结点。考试时,迫不得已写这个,最多扣一分!!

 

这些代码都要会写,都重要!!!

打牢基础。慢慢加速!!!!

体会封装的好处!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值