C++ 链表算法学习笔记(学习+刷题)

发布时间:2026/9/20 5:45:04

C++ 链表算法学习笔记(学习+刷题) 前言链表是算法入门的最大难点绝大多数新手报错、做题出错基本都是因为分不清指针和节点、看不懂链表结构、不会处理边界情况。本篇笔记用通俗直白的语言梳理链表必备知识点、刷题模板和常见坑适合新手快速吃透、直接拿来刷题复用。一、核心基础彻底分清「节点」和「指针」1. 简单理解定义链表节点 ListNode真正存数据的“车厢”里面有数值 val 和指向下一节车厢的 next是链表的真实内容。节点指针 ListNode*记录车厢位置的“地址标签”只负责找节点本身不存任何数据不是链表的一部分。2. 访问节点的固定规则访问节点数据只有两种写法死记即可实实在在的节点不带*用.访问例dummy.val指针/地址标签带*用-访问例head-val、cur-next3. 最容易混淆的两个操作指针移动cur cur-next只是把“标签”挪到下一个节点链表本身没变。修改链表结构cur-next xxx修改了车厢的连接关系会断链、改链真正改变链表。严禁操作空指针nullptr是空标签没有指向任何节点强行访问next会直接程序报错。二、头指针 head 通俗理解1. 定义head 就是链表的头部地址标签永远指向链表第一个有效数据节点它只是一个指针本身不是链表节点。2. 核心特性cur head临时指针 cur 复制了 head 的地址两个标签指向同一条链表操作的是同一组节点。遍历链表时只移动 curhead 固定不动防止找不到链表开头。刷题返回结果要么返回原头指针 head要么返回虚拟头节点的后继dummy.next。三、刷题神器虚拟头节点1. 作用链表最麻烦的就是删除/修改第一个节点需要单独判断边界。dummy 是一个空的“傀儡节点”放在链表最前面不存有效数据能让所有节点的操作逻辑完全一致不用单独处理头节点大幅减少bug。2. 通用模板ListNode dummy; // 创建虚拟头节点 dummy.next head; // 将虚拟头节点连接到原链表头部 ListNode* cur dummy; // 使用指针 cur 从虚拟头节点开始遍历 // 在此处进行链表的增、删、改、查等操作 return dummy.next; // 返回新链表的头节点即原链表的头部四、链表三大核心刷题操作1. 链表遍历核心原则用临时指针遍历坚决不动 head保证链表头部不丢失。ListNode* cur head; while(cur ! nullptr){ // 对当前节点做操作 cur cur-next; }2. 删除节点高频考点核心口诀删节点必找前驱不能直接删掉目标节点想要删除某个节点必须找到它前一个节点让前一个节点直接连上后一个节点跳过目标节点。示例A-B-C删除 B写法A-next A-next-next删除倒数第N个节点通用规则len 链表总节点数不用 dummy需要往前走len - n - 1步找到前驱节点边界特殊情况len n要删的是第一个节点直接返回head-next3. 链表截取链表没有数组那样的切片功能截取片段只需要两步1. 找到想要的起始节点、末尾节点2. 把末尾节点的 next 置空断链。重点返回某个中间节点时会默认带上它后面所有节点输出后半段完整链表不会只返回单个值。五、经典算法模板1. 快慢指针规则慢指针一次走1步快指针一次走2步。适用场景找链表中点、判断链表有没有环、一趟遍历删除倒数第n个节点。逻辑简单、效率极高是链表刷题核心算法。2. 迭代反转链表用 pre、cur、nxt 三个指针配合先保存下一个节点再反转当前节点的指向最后依次后移指针循环完成整条链表反转无递归开销稳定性最强。六、配套知识点C整数除法规则C整数除法一律向0取整不是单纯的向下取整正数直接舍去小数7 / 3 2负数向0靠拢-7 / 3 -2和向下取整不同正整数向上取整通用公式(a b - 1) / b七、高频易错点符号用错实体节点用.指针必须用-gt;空指针报错对空的 nullptr 访问 next程序直接崩溃删点错误直接操作目标节点没有找前驱节点删错数据概念混淆误以为移动指针会改变链表结构边界遗漏忘记单独处理删除头节点的特殊情况认知误区不知道返回节点会自带后续整条链表八、总结遍历只用临时指针头指针不动保全局删点必先找前驱dummy 规避头节点边界指针移动不改链赋值重连才改结构快慢指针搞定中点、判环、倒数节点截取链表只需断尾返回节点自带后缀。
延伸阅读

更多相关文章

2026/9/20 5:45:12

03-iOS免越狱无线投屏-上传图片和视频到相册

03-iOS免越狱无线投屏-上传图片和视频到相册iOS免越狱无线投屏文档教程地址:https://ieasyclick.com/iostjdocs/zh-cn/funcs/tjcenter/ 本集:上传图片和视频到相册。 目标:把电脑上的图片或视频推到手机相册。可用工具栏或右键入口&#xf…

2026/9/21 3:12:33

Cartographer纯定位模式实战:从仿真到真机部署与故障排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 3:12:33

报表自动化实战:表样设计与推送通道选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 3:12:33

Primavera P6项目管理操作系统:WBS重构、进度引擎与API契约实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 3:12:33

CH32V307 上 FreeRTOS 与 LwIP 移植实战:从工程搭建到网络调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 3:07:33

Ollama+DeepSeek+Dify本地化部署:打造私有AI工作站实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码