python coding with ChatGPT 打卡第3天| 移除链表、设计链表、反转链表

系列文章
python coding with ChatGPT 打卡第1天| 二分查找、移除元素
python coding with ChatGPT 打卡第2天| 双指针、滑动窗口、螺旋矩阵

链表基础

类型

单链表:
在这里插入图片描述双链表:
在这里插入图片描述

循环链表:
在这里插入图片描述

存储方式

在这里插入图片描述

这里也解释了 为什么下面current指向改变了,head(整个链表)也改变了

数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的。
链表是通过指针域的指针链接在内存中各个节点。

所以链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。

定义

单链表

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


a_Node = ListNode(5)

创建链表:

def create_linked_list(arr):
    """
    This function takes an array and converts it into a linked list.
    """
    if not arr:
        return None

    # 创建一个哨兵节点作为起始点
    head = ListNode(arr[0])
    current = head   # 指针

    # 遍历数组中剩余的元素
    for val in arr[1:]:
        # 为每个元素创建一个新的 ListNode 并附加到链表上
        current.next = ListNode(val)
        current = current.next

    return head

操作

删除:
在这里插入图片描述

增加:
在这里插入图片描述

性能

在这里插入图片描述数组的查询:下标

移除链表

Key Points

1. 哨兵节点:dummy_head
2. 利用指针时,单链表指向下一个,无法从下一个指回上一个
3. 更新指针注意赋值顺序

视频讲解

链表基础操作

相关题目

203. 移除链表元素

重点分析

在这里插入图片描述

设计链表

视频讲解

帮你把链表操作学个通透

相关题目

707. 设计链表

重点分析

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

反转链表

Key Points

  1. 双指针pre、current
  2. 临时指针tmp 保证赋值
  3. 画图辅助理解

视频讲解

帮你拿下反转链表

相关题目

26. 反转链表

重点分析

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值