【代码随想录python笔记整理】第十五课 · 链表的基础操作 3

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。

一、前言

       这是链表基础操作的最后一节了。在之前两节中,我们学习了创建链表,以及在链表的尾部插入新的节点。但有时候,我们对于一个已经创建好的链表而言,需要在链表中间插入或是删除节点。那么这就是这一节课我们需要学习的知识。

二、链表的中间插入过程

       如何理解在链表中间插入一个新的节点这一过程呢?我们可以用一个故事来帮助理解——在一次情报传递过程中,A 是上线,它的下线是 B,即 A.next = B。但此时情况有变,A 需要将情报先转交给 C,再由 C 将情报转交给 B,并且 A 一旦和 B 失去联系就再也无法联系上了。

       因此,针对这一过程,我们可以:第一步,将 C.next 指向 B;第二步,将 A.next 指向 C,这样就将新的情报关系构建完成了。值得注意的是,由于 B 无法直接表示,所以使用 C.next = A.next。

       这样就完成了链表节点的插入过程。转换成代码如下:

# 第 n 个位置插入元素
def insert_at(self,n,data):
    new_node = Node(data)
    if n == 1: # 假如是头节点
        new_node.next = self.head_node # 新节点的 next 指向原来的头节点
        self.headNode = new_node # 新节点成为新的头节点
        self.length += 1 # 链表长度加1
        return new_node
    else: # 假如不是头节点
        pre_node = self.get(n-1) # 使用 get 方法获取要插入位置的前一
                                 # 个节点,命名 pre_node
        if pre_node is not None:
            new_node.next = pre_node.next
            pre_node.next =
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值