第27讲:单链表专题
目录链表的概念及结构单链表的实现链表的分类单链表专题1课时1. 链表的概念及结构概念链表是一种在物理存储结构上非连续、非顺序的存储结构数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表的结构跟火车车厢相似淡季时车次的车厢会相应减少旺季时车次的车厢会额外增加几节。只需要将火车里的某节车厢去掉/加上不会影响其他车厢每节车厢都是独立存在的。车厢是独立存在的且每节车厢都有车门。想象一下这样的场景假设每节车厢的车门都是锁上的状态需要不同的钥匙才能解锁每次只能携带一把钥匙的情况下如何从车头走到车尾最简单的做法每节车厢里都放一把下一节车厢的钥匙。在链表里每节“车厢”是什么样的呢与顺序表不同的是链表里的每节“车厢”都是独立申请下来的空间我们称之为“结点/节点”。节点的组成主要有两个部分当前节点要保存的数据和保存下一个节点的地址指针变量。图中指针变量plist保存的是第一个节点的地址我们称plist此时“指向”第一个节点。如果我们希望plist“指向”第二个节点时只需要修改plist保存的内容为0x0012FFA0。为什么还需要指针变量来保存下一个节点的位置链表中每个节点都是独立申请的即需要插入数据时才去申请一块节点的空间我们需要通过指针变量来保存下一个节点位置才能从当前节点找到下一个节点。结合前面学到的结构体知识我们可以给出每个节点对应的结构体代码假设当前保存的节点为整型structSListNode{intdata;//节点数据structSListNode*next;//指针变量用保存下一个节点的地址};当我们想要保存一个整型数据时实际是向操作系统申请了一块内存这个内存不仅要保存整型数据也需要保存下一个节点的地址当下一个节点为空时保存的地址为空。当我们想要从第一个节点走到最后一个节点时只需要在前一个节点拿上下一个节点的地址下一个节点的钥匙就可以了。给定的链表结构中如何实现节点从头到尾的打印思考当我们想保存的数据类型为字符型、浮点型或者其他自定义的类型时该如何修改补充说明链式结构在逻辑上是连续的在物理结构上不一定连续节点一般是从堆上申请的从堆上申请来的空间是按照一定策略分配出来的每次申请的空间可能连续也可能不连续2. 单链表的实现typedefintSLTDataType;typedefstructSListNode{SLTDataType data;//节点数据structSListNode*next;//指针保存下一个节点的地址}SLTNode;voidSLTPrint(SLTNode*phead);//头部插入删除/尾部插入删除voidSLTPushBack(SLTNode**pphead,SLTDataType x);voidSLTPushFront(SLTNode**pphead,SLTDataType x);voidSLTPopBack(SLTNode**pphead);voidSLTPopFront(SLTNode**pphead);//查找SLTNode*SLTFind(SLTNode*phead,SLTDataType x);//在指定位置之前插入数据voidSLTInsert(SLTNode**pphead,SLTNode*pos,SLTDataType x);//删除pos节点voidSLTErase(SLTNode**pphead,SLTNode*pos);//在指定位置之后插入数据voidSLTInsertAfter(SLTNode*pos,SLTDataType x);//删除pos之后的节点voidSLTEraseAfter(SLTNode*pos);//销毁链表voidSListDesTroy(SLTNode**pphead);基于数据结构-单链表实现通讯录项目3. 链表的分类链表的结构非常多样以下情况组合起来就有 8 种2 x 2 x 2链表结构链表说明虽然有这么多的链表的结构但是我们实际中最常用还是两种结构单链表和双向带头循环链表。无头单向非循环链表结构简单一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头双向循环链表结构最复杂一般用在单独存储数据。实际中使用的链表数据结构都是带头双向循环链表。另外这个结构虽然结构复杂但是使用代码实现以后会发现结构会带来很多优势实现反而简单了后面我们代码实现了就知道了。

相关新闻

白盒卡通化:可解释图像风格迁移技术解析

白盒卡通化:可解释图像风格迁移技术解析

1. 项目概述:这不只是读论文,而是拆解一张“数字漫画滤镜”的设计图纸“Learning to Cartoonize Using White-box Cartoon Representations”——这个标题乍看像一串学术密码,但把它掰开揉碎,其实就是讲:如何用可解释、…

2026/10/16 0:51:28 阅读更多 →
WiresharkPortable无权限抓包原理与实战避坑指南

WiresharkPortable无权限抓包原理与实战避坑指南

简介:WiresharkPortable是一款开箱即用的便携式网络协议分析器,面向网络管理员、安全工程师与开发人员,专为无安装环境下的实时抓包、协议解析与流量诊断设计。资源包体为20.16MB的RAR压缩文件,虽未提供具体文件列表,但…

2026/10/16 0:50:28 阅读更多 →
SpringBoot+Vue三模认证系统设计与落地难点

SpringBoot+Vue三模认证系统设计与落地难点

简介:这是一套基于SpringBoot与Vue实现的前后端分离一卡通消费系统源码,面向计算机专业本科生及Java初学者,适用于课程设计、毕业设计等实践场景,支持人脸认证、二维码支付和实体IC卡刷卡三种主流消费方式。资源共748个文件&#…

2026/10/16 0:50:28 阅读更多 →

最新新闻

Java五子棋游戏开发实战:从棋盘建模到AI对战全解析

Java五子棋游戏开发实战:从棋盘建模到AI对战全解析

简介:面向Java开发者的五子棋游戏学习工程包,覆盖面向对象设计、Swing图形界面构建、AI博弈算法和完整项目开发流程,并给出可直接运行的程序示例。包内已实现棋盘类、棋子类、玩家类以及基于极小极大算法与Alpha-Beta剪枝的电脑AI&#xff0c…

2026/10/16 1:50:43 阅读更多 →
Rufus 4.15 启动盘制作快速指南:4 步把 U 盘变成系统安装盘

Rufus 4.15 启动盘制作快速指南:4 步把 U 盘变成系统安装盘

Rufus 4.15 启动盘制作快速指南:4 步把 U 盘变成系统安装盘 【免费下载链接】rufus The Reliable USB Formatting Utility 项目地址: https://gitcode.com/GitHub_Trending/ru/rufus Rufus 是一款免费、免安装的 USB 盘格式化工具兼启动盘制作工具&#xff1…

2026/10/16 1:50:43 阅读更多 →
LAMMPS `fix wall/gran/region` 命令详解:用任意几何 region 构造颗粒摩擦壁

LAMMPS `fix wall/gran/region` 命令详解:用任意几何 region 构造颗粒摩擦壁

科研科学计算高性能计算 【免费下载链接】lammps Public development project of the LAMMPS MD software package 项目地址: https://gitcode.com/gh_mirrors/la/lammps 点击查看 免费下载 导读 fix wall/gran/region 是 LAMMPS GRANULAR 包提供的命令&#xff…

2026/10/16 1:50:43 阅读更多 →
ESP-IDF 环境搭建完整指南:EIM 双通道装框架,从零配置到烧出第一个 Hello World

ESP-IDF 环境搭建完整指南:EIM 双通道装框架,从零配置到烧出第一个 Hello World

ESP-IDF 环境搭建完整指南:EIM 双通道装框架,从零配置到烧出第一个 Hello World 【免费下载链接】esp-idf Espressif IoT Development Framework. Official development framework for Espressif SoCs. 项目地址: https://gitcode.com/GitHub_Trending…

2026/10/16 1:50:43 阅读更多 →
ok-ww 鸣潮后台自动战斗:把两小时日常变成半小时定时挂机

ok-ww 鸣潮后台自动战斗:把两小时日常变成半小时定时挂机

ok-ww 鸣潮后台自动战斗:把两小时日常变成半小时定时挂机 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 日常跑完还要…

2026/10/16 1:50:43 阅读更多 →
N_m3u8DL-RE 实战手册:M3U8/MPD 下载,5 步从装到跑通

N_m3u8DL-RE 实战手册:M3U8/MPD 下载,5 步从装到跑通

N_m3u8DL-RE 实战手册:M3U8/MPD 下载,5 步从装到跑通 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_m3…

2026/10/16 1:49:43 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →