力扣:链表篇章

1、链表

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

2、链表的类型

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

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

3、链表的存储方式

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

4、如何实现链表

(1)定义链表

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

(2)操作链表

删除节点

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

添加节点

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

(3)数组与链表对比

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/274999.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图【数据结构】

文章目录 图的基本概念邻接矩阵邻接表图的遍历BFSDFS 图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构 顶点和边:图中结点称为顶点 权值:边附带的数据信息 路径 : 简单路径 和 回路: 子图:设图G {V, E}和图G1…

考研C语言复习进阶(1)

目录 1. 数据类型介绍 1.1 类型的基本归类: 2. 整形在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 3. 浮点型在内存中的存储 ​编辑 1. 数据类型介绍 前面我们已经学习了基本的内置类型: char //字符数据类型 short //短整型 int /…

【Python】random库

专栏文章索引:Python 原文章:Python中random函数用法整理_python random-CSDN博客 目录 1.random.random() 2.random.uniform(a, b) 3.random.randint(a, b) 4.random.randrange([start], stop[, step]) 5. random.choice() 6. random.shuffle(x[,…

测试用例的设计(2)

目录 1.前言 2.正交排列(正交表) 2.1什么是正交表 2.2正交表的例子 2.3正交表的两个重要性质 3.如何构造一个正交表 3.1下载工具 3.1构造前提 4.场景设计法 5.错误猜测法 1.前言 我们在前面的文章里讲了测试用例的几种设计方法,分别是等价类发,把测试例子划分成不同的类…

鸿蒙开发面试真题分享~

1. 在鸿蒙应用开发中,有哪些常用的性能优化策略和技术手段,如启动速度优化、内存管理优化、功耗控制等? 参考答案: 2. 鸿蒙系统强调跨平台特性,你会如何利用这一特性来优化多端部署和适配? 参考答案&…

关于Spark中OptimizeShuffleWithLocalRead 中自己的一些理解

背景 本文基于 Spark 3.5 关于ShuffleLocalRead的作用简单的来说,就是会按照一定的规则,从一个 map Task 中连续读取多个 reduce数据 的任务,(正常的情况下是读取所有map Task中特定的一个reduce数据任务)&#xff0c…

DJI RONIN 4D变0字节恢复案例

RONIN 4D这个产品听起来比较陌生,还是DJI大疆出品。没错,这是大疆进军影视级的重点明星机型。前阵子刚处理过大疆RONIN 4D的修复案例,下边这个案例是和exfat有关的老问题:文件长度变成0字节。 故障存储:希捷18T /MS Exfat文件系统。 故障现…

海豚调度系列之:任务类型——SPARK节点

海豚调度系列之:任务类型——SPARK节点 一、SPARK节点二、创建任务三、任务参数四、任务样例1.spark submit2.spark sql 五、注意事项: 一、SPARK节点 Spark 任务类型用于执行 Spark 应用。对于 Spark 节点,worker 支持两个不同类型的 spark…

Orange3数据预处理(离散化组件)

离散化:将数值属性转换为分类属性。 输出 数据:具有离散化值的数据集 设置离散化的默认方法。 选择变量以为每个变量设置特定的离散化方法。将鼠标悬停在变量上显示区间。 离散化方法Keep numeric(保持数值):保持变量不变。Remove (移除)&a…

介绍第一位 AI 软件工程师 Devin

认识 Devin,世界上第一位完全自主的 AI 软件工程师。 ‍ Devin 是一位孜孜不倦、技术娴熟的队友,同样愿意与您一起构建或独立完成任务供您查看。 有了 Devin,工程师可以专注于更有趣的问题,工程团队可以为更雄心勃勃的目标而奋斗。…

如何利用生成式人工智能撰写英语商务邮件?

写商务邮件简介 在当今数字化时代,能够撰写有效的商务邮件是一项无价的技能。电子邮件是专业世界中主要的沟通方式,在轻松跨越距离和时区的同时,也带来了一系列挑战;它要求清晰、高效,并遵循某些专业礼仪的潜在规则。…

常用的gpt网站

ChatGPT是一款基于人工智能技术的对话型AI助手,能够进行自然语言交互并提供个性化的对话服务。通过先进的深度学习模型,ChatGPT能够理解用户输入的文本,并生成有逻辑、连贯性的回复。它可以回答各种问题、提供建议、分享知识,还能…

2024年软考计划开始了,你准备好了吗?

目录标题 2024年度计算机技术与软件专业技术资格(水平)考试工作计划计算机软考中级科目哪个含金量最高?报考流程和说明 2024年度计算机技术与软件专业技术资格(水平)考试工作计划 一、2024年度计算机软件资格考试(初级…

SSM整合和实战练习笔记

SSM整合和实战练习1 SSM整合springmvc配置业务层 service aop tx的配置mybatis整合配置(方式2容器初始化配置类访问测试mapper层service层controller层 实战练习前端程序搭建后端程序搭建配置类创建实体类三层架构搭建(controller service mapper)功能实现&#xff…

Java学习笔记(7)

练习 package exercise3;public class FightTest {public static void main(String[] args) {Role r1 new Role("kobe", 100);Role r2 new Role("james", 100);while (true) {r1.attack(r2);if (isWin(r1,r2)) break;r2.attack(r1);if (isWin(r2,r1)) br…

虚幻4 | 制作游戏——学习记录(一)

1. 启动Epic后下载虚幻4,打开虚幻4后新建一个第三人称游戏项目,效果如下: (1)内容/ThirdPersonBP/Blueprints中的ThirdPersonCharacter(左下角人物) 这是模板中使用的主要蓝图类,它…

Frostmourne - Elasticsearch源日志告警配置

简介 配置Frostmourne 接入Elasticsearch源进行日志匹配告警,并静默规则,告警消息发送到企业微信,告警信息使用Markdown。 部署安装教程查看: https://songxwn.com/frostmourne_install ELK 安装教程:https://songx…

【Android】 ClassLoader 知识点提炼

1.Java中的 ClassLoader 1.1 、ClassLoader的类型 Java 中的类加载器主要有两种类型,即系统类加载器和自定义类加载器。其中系统类 加载器包括3种,分别是 Bootstrap ClassLoader、Extensions ClassLoader 和 Application ClassLoader。 1.1.1.Bootstra…

从0到1入门C++编程——12 演讲比赛流程管理系统

文章目录 一、创建类并显示菜单二、退出管理系统三、开始演讲比赛四、查看往届记录五、清空比赛记录六、案例源代码 演讲比赛流程管理系统 比赛规则:演讲比赛共有12个人参加,比赛分两轮进行,第一轮为淘汰赛,第二轮为决赛。每名选手…

Java中 final、finally、finalize 有什么区别?

1、典型回答 final、finally、finalize 是 Java 中三个不同的关键字,它们除了长得像之外,其他的(作用和含义)完全不同。 它们三个的区别就好像:雷、雷锋、雷峰塔之间的区别。(是三个完全不同的东西&#…