系列文章
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. 反转链表

重点分析

在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐