力扣:链表篇章

1、链表

链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。
在这里插入图片描述

2、链表的类型

(1)单链表
单链表中的指针域只能指向节点的下一个节点。
在这里插入图片描述

(2)双链表
双链表:每一个节点有两个指针域,一个指向下一个节点,一个指向上一个节点。
因此双链表既可以向前查询也可以向后查询。
在这里插入图片描述
(3)循环链表
循环链表就是链表首尾相连,可以用来解决约瑟夫环问题。
在这里插入图片描述

3、链表的存储方式

链表在内存中不是连续分布的,通过指针域的指针链接内存中各个节点。
链表中的节点散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。
在这里插入图片描述
例如:这个链表起始节点为2, 终止节点为7, 各个节点分布在内存的不同地址空间上,通过指针串联在一起。

4、如何实现链表

(1)定义链表

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

(2)操作链表

删除节点

只要将C节点的next指针 指向E节点就可以了。
但是D节点依然存留在内存里,只不过是没有在这个链表中而已。所以在C++里最好再手动释放这个D节点,释放这块内存。
其他语言例如Java、Python,就有自己的内存回收机制,就不用自己手动释放了。
在这里插入图片描述

添加节点

链表的增添和删除都是O(1)操作,不会影响到其他节点。
但是要注意,查找的时间复杂度是O(n)。
在这里插入图片描述

(3)数组与链表对比

在这里插入图片描述

相关推荐

  1. 相交-

    2024-03-12 08:14:04       10 阅读
  2. 】160.相交

    2024-03-12 08:14:04       38 阅读
  3. 100】141.环形

    2024-03-12 08:14:04       36 阅读
  4. 61. 旋转

    2024-03-12 08:14:04       43 阅读
  5. 206-反转

    2024-03-12 08:14:04       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-12 08:14:04       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-12 08:14:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-12 08:14:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-12 08:14:04       18 阅读

热门阅读

  1. 常见Linux系统的优劣对比(Ubuntu、RHEL、CentOS)

    2024-03-12 08:14:04       18 阅读
  2. c/c++输入和输出标准库stdio和iostream介绍

    2024-03-12 08:14:04       20 阅读
  3. 数据库学习案例20240311 -mysql xtrabackup 备份与恢复

    2024-03-12 08:14:04       20 阅读
  4. 使用VScode避坑指南

    2024-03-12 08:14:04       27 阅读
  5. 如何通过Python代码连接OceanBase Oracle租户

    2024-03-12 08:14:04       20 阅读
  6. Python学习笔记之列表

    2024-03-12 08:14:04       21 阅读