当前位置: 首页 > article >正文

高考数学97分,我的“数学直觉“比140分更好用:链表指针操作的代数思维:从离散数学看单链表

目录一序言二数学思维三核心概念1. 节点Node2. 头指针Head Pointer3. 链式存储4. 链表类型5. 核心操作6. 内存管理7. 与顺序表的对比数学思维8. 应用场景四代码实现1结构定义2. 初始化链表3. 插入操作增4. 删除操作删5. 查找操作查6. 修改操作改7. 遍历输出8. 测试代码五最后总结一序言大家好我是小洛上节内容我们讲了由顺序存储的线性结构---顺序表今天要讲的是关于链式存储的线性结构----链表看看数据存储的方式到底有什么变化二数学思维链表就像是一列火车头结点就像是一个火车头来统领全局并且连接后面。而节点就像是火车的每个车间每个车间有自己数据。从数学结构上来看链表是一种离散线性结构链表的操作依赖指针接力来访问元素顺序表的操作依赖数组下标来访问元素。三核心概念1. 节点Node定义 链表的基本组成单元包含 数据域 存储实际数据和 指针域 存储指向下一个节点的地址。作用 通过指针域将分散的节点串联成一个整体。示例 单链表节点结构C语言2. 头指针Head Pointer定义 指向链表第一个节点的指针是访问整个链表的入口点。作用 作为链表的“门把手”通过它可以遍历或操作整个链表。状态 空链表时头指针为 NULL 。3. 链式存储特性 节点在内存中 非连续存储 通过指针连接形成逻辑上的线性结构。优势 无需预先分配连续内存适合动态数据场景。劣势 无法像数组那样随机访问需从头遍历。4. 链表类型单链表 每个节点只有一个指针域指向后继节点只能单向遍历。双向链表 每个节点有两个指针域分别指向前驱和后继节点支持双向遍历。循环链表 尾节点的指针指向头节点形成环形结构适合循环处理场景约瑟夫环。5. 核心操作插入 若已知插入位置的前驱节点则操作时间为 O(1)若按位置插入需先查找总时间为 O(n)。删除 若已知插入位置的前驱节点则操作时间为 O(1)若按位置插入需先查找总时间为 O(n)。遍历 O(n) 时间复杂度需从头开始依次访问。查找 O(n) 时间复杂度需遍历节点比较数据。6. 内存管理动态分配 节点通过 malloc 等函数动态分配内存。内存释放 删除节点时需通过 free 释放内存避免内存泄漏。碎片化 频繁的插入/删除可能导致内存碎片化。7. 与顺序表的对比特性链表顺序表存储方式非连续内存指针连接连续内存插入/删除O(1)修改指针O(n)移动元素随机访问O(n)需遍历O(1)直接下标访问空间开销额外存储指针无额外开销适用场景频繁插入/删除频繁随机访问数学思维如果我把顺序表比喻成食堂打饭排队一个一个有序的排队那么链表就是医院叫号每个人不用站在一起坐在任何位置都行只要记住 “下一个人的号码”就能形成队伍。号码指针把分散的人节点按顺序“叫”起来即使他们坐在不同位置。8. 应用场景队列 FIFO先进先出操作适合链表实现。栈 LIFO后进先出操作可通过链表实现。哈希表 解决冲突时的链地址法。LRU缓存 需要频繁删除最久未使用的元素。树形结构/图 作为其底层存储结构如邻接表。四代码实现1结构定义#include stdio.h #include stdlib.h typedef struct Node { int data; // 数据域 struct Node *next; // 指针域 } Node;2. 初始化链表Node* initList() { Node *head (Node*)malloc(sizeof(Node)); head-next NULL; // 初始为空链表 return head; }3. 插入操作增void insert(Node *head, int pos, int value) { Node *p head; // 找到插入位置的前一个节点 for (int i 0; i pos p-next ! NULL; i) { p p-next; } // 创建新节点 Node *newNode (Node*)malloc(sizeof(Node)); newNode-data value; // 插入节点 newNode-next p-next; p-next newNode; }4. 删除操作删void delete(Node *head, int pos) { Node *p head; // 找到删除位置的前一个节点 for (int i 0; i pos p-next ! NULL; i) { p p-next; } // 检查位置是否合法 if (p-next NULL) { printf(删除位置不合法\n); return; } // 删除节点 Node *delNode p-next; p-next delNode-next; free(delNode); }5. 查找操作查int find(Node *head, int value) { Node *p head-next; int pos 0; while (p ! NULL) { if (p-data value) { return pos; } p p-next; pos; } return -1; }6. 修改操作改void modify(Node *head, int pos, int newValue) { Node *p head-next; // 找到指定位置的节点 for (int i 0; i pos p ! NULL; i) { p p-next; } // 检查位置是否合法 if (p NULL) { printf(修改位置不合法\n); return; } // 修改数据 p-data newValue; }7. 遍历输出void printList(Node *head) { Node *p head-next; printf(链表元素); while (p ! NULL) { printf(%d , p-data); p p-next; } printf(\n); }8. 测试代码int main() { Node *head initList(); // 插入测试增 insert(head, 0, 10); insert(head, 1, 20); insert(head, 2, 30); printList(head); // 输出10 20 30 // 查找测试查 int pos find(head, 20); printf(元素20的位置%d\n, pos); // 输出1 // 修改测试改 modify(head, 1, 25); printList(head); // 输出10 25 30 // 删除测试删 delete(head, 1); printList(head); // 输出10 30 // 释放内存 Node *p head; while (p ! NULL) { Node *temp p; p p-next; free(temp); } return 0; }五最后总结不论是顺序表还是链表他们都是存储数据的方式。都是由变量数组结构体指针这四种基本存储数据的方式相互组合人为创造出来的。他们的优点都有所不同比如说顺序表侧重于随机访问而链表侧重于插入和删除。

相关文章:

高考数学97分,我的“数学直觉“比140分更好用:链表指针操作的代数思维:从离散数学看单链表

目录 一,序言 二,数学思维 三,核心概念 1. 节点(Node) 2. 头指针(Head Pointer) 3. 链式存储 4. 链表类型 5. 核心操作 6. 内存管理 7. 与顺序表的对比 数学思维: 8. 应用场景 四…...

保姆级教程:用Python解析大疆无人机照片EXIF,实现正射影像像素坐标定位

大疆无人机正射影像像素级地理定位实战指南 从航拍到测绘:解锁影像元数据的空间密码 当大疆无人机的快门按下瞬间,传感器记录的远不止是可见光信息。每一张正射影像都像被精心封装的时间胶囊,内部藏着完整的空间坐标、飞行姿态和相机参数。这…...

避坑指南:在Luckfox Pico上配置Qt Creator交叉编译环境(RV1106 SDK)

Luckfox Pico RV1106 Qt Creator交叉编译环境配置实战 作为一名长期深耕嵌入式Qt开发的工程师,我深知在资源受限的RV1106平台上搭建高效开发环境的痛点。本文将分享如何在Ubuntu 22.04系统中,利用Luckfox官方SDK为Qt Creator配置完整的交叉编译工具链&am…...

Cursor Pro免费激活终极指南:三步解锁AI编程无限可能

Cursor Pro免费激活终极指南:三步解锁AI编程无限可能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tria…...

d2s-editor:让暗黑破坏神2存档修改变得简单安全

d2s-editor:让暗黑破坏神2存档修改变得简单安全 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 对于暗黑破坏神2玩家而言,修改存档往往是一把双刃剑——既想个性化角色体验,又担心损坏文件或失…...

Kazumi:3步打造你的专属动漫播放器,告别追番烦恼

Kazumi:3步打造你的专属动漫播放器,告别追番烦恼 【免费下载链接】Kazumi 基于自定义规则的番剧采集APP,支持流媒体在线观看,支持弹幕,支持实时超分辨率。 项目地址: https://gitcode.com/gh_mirrors/ka/Kazumi …...

开题之后,如何继续用图和表推进本科毕业设计与毕业论文写作?——以系统开发类和网络规划设计类选题为例

把图和表从“开题工具”和“写作材料”,提升为本科生理解和实践工程化思想的方法支架。 作者:非凡大爹|版本:v2.0|日期:2026-04-06|DocID:GRAD-2026S-PG-02 原创声明:本…...

快速验证域名跳转思路:用快马十分钟搭建jxx登录页检测工具原型

快速验证域名跳转思路:用快马十分钟搭建jxx登录页检测工具原型 最近注意到"jxx登录网页最新域名在哪"这个关键词搜索量突然增加,很多用户都在寻找特定网站的访问入口。这种需求其实很常见——当某个服务频繁更换域名时,普通用户很…...

MaaYuan使用指南

MaaYuan使用指南 【免费下载链接】MaaYuan 代号鸢 / 如鸢 一键长草小助手 项目地址: https://gitcode.com/gh_mirrors/ma/MaaYuan MaaYuan是一款基于MaaFramework开发的跨平台游戏自动化工具,专为《代号鸢》和《如鸢》玩家设计。通过图像识别和模拟控制技术&…...

网络安全舆情分析:利用NLP-StructBERT聚类相似威胁报告

网络安全舆情分析:利用NLP-StructBERT聚类相似威胁报告 每天一上班,安全运营中心(SOC)的分析师小李就要面对一个令人头疼的“信息洪灾”。来自几十个不同安全厂商、开源社区、监管机构的威胁报告和漏洞公告,像雪片一样…...

喜马拉雅音频下载器:5步掌握跨平台批量下载技巧

喜马拉雅音频下载器:5步掌握跨平台批量下载技巧 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 还在为无法保存喜马拉雅…...

一次性拖鞋自动下料系统设计超声波热熔裁剪机设计【论文+CAD图纸+solidworks三维+开题报告+任务书+实习调研报告+其它相关资料】

一次性拖鞋自动下料系统与超声波热熔裁剪机的设计,聚焦于提升拖鞋制造环节的效率与精度。传统拖鞋生产中,人工下料易受操作误差影响,导致材料浪费与产品尺寸偏差;而普通裁剪方式可能因热熔不充分,出现边缘毛刺或连接不…...

nli-distilroberta-base惊艳效果:支持动态max_length配置,兼顾长文本与低延迟需求

nli-distilroberta-base惊艳效果:支持动态max_length配置,兼顾长文本与低延迟需求 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务,专门用于判断两个句子之间的逻辑关系。这个轻量级模型在保持…...

快速构建SpringBoot微服务:Phi-3-mini智能代码生成与架构咨询

快速构建SpringBoot微服务:Phi-3-mini智能代码生成与架构咨询 1. 引言:当AI助手遇上Java开发 最近接手了一个新项目,需要快速搭建一套SpringBoot微服务架构。正当我对着空白的IDE发愁时,同事推荐了Phi-3-mini这个AI助手。说实话…...

springCloud_day06

目录 MQ 入门 - 01.MQ 课程介绍 MQ 入门 - 02. 初识 MQ - 同步调用优缺点 MQ 入门 - 03. 初识 MQ - 异步调用优缺点 MQ 入门 - 04. 初识 MQ - 技术选型 MQ 入门 - 05.RabbitMQ - 安装部署 问题:设置的账户密码是什么? MQ 入门 - 06.RabbitMQ - 快速入门 MQ 入门 - 07.R…...

PT站一键转载脚本:100+站点支持,彻底告别手动转载烦恼

PT站一键转载脚本:100站点支持,彻底告别手动转载烦恼 【免费下载链接】auto_feed_js PT站一键转载脚本 项目地址: https://gitcode.com/gh_mirrors/au/auto_feed_js PT(Private Tracker)社区的资源分享一直是核心文化&…...

开源项目WSA-Windows-10:让Windows 10焕发Android应用生态新活力

开源项目WSA-Windows-10:让Windows 10焕发Android应用生态新活力 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 在数字化办公与娱乐融…...

3大核心功能揭秘:QuickBMS实战指南——从二进制迷宫到数据宝藏

3大核心功能揭秘:QuickBMS实战指南——从二进制迷宫到数据宝藏 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS 引言:二进制世界的解密钥匙 在数字时代,我们…...

终极QMC音频解密指南:3分钟解锁QQ音乐加密文件

终极QMC音频解密指南:3分钟解锁QQ音乐加密文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音频无法在车载音响、智能音箱上播放而烦…...

vue3 中路由 vue-router 的使用

理解 createRouter、createWebHistory 组合式 API 中的 useRoute、useRouter的使用createRouter 的作用 功能:创建一个 Vue Router 实例,管理应用的路由跳转、历史记录、导航守卫等。 参数:接收一个配置对象,核心属性:…...

高效下载huggingface模型权重的4种实用方法

1. 使用国内镜像站加速下载 遇到Hugging Face模型下载慢的问题,我最先尝试的解决方案就是切换镜像站。国内有几个稳定的镜像源,实测下载速度能提升5-10倍。这里分享我最常用的hf-mirror.com镜像站使用技巧。 首先需要安装官方工具包: pip ins…...

过河卒算法备案:我们不便宜,但我们值这个价!

在算法备案行业竞争愈演愈烈的当下,价格战愈加白热化,材料造假、模板套用、盲目承诺等行为屡见不鲜。这种“表面合规”看似便宜,实则暗藏风险。一旦遇到监管抽查,轻则整改重新备案,重则受罚,企业蒙受巨大损…...

(论文速读)FD-LLM:将振动信号编码为文本表示来将振动信号与大型语言模型进行对齐

论文题目:Large language models for explainable fault diagnosis of machines(用于机器可解释故障诊断的大型语言模型)期刊:Engineering Applications of Artificial Intelligence(EAAI)摘要:…...

BilibiliDown:B站视频高效下载的4个核心解决方案

BilibiliDown:B站视频高效下载的4个核心解决方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bil…...

mysql事务提交慢的原因及对策_通过调整innodb_log_file_size优化

innodb_log_file_size过小会导致事务提交变慢,因其迫使InnoDB频繁checkpoint、刷脏页并阻塞日志复用,引发COMMIT延迟及锁等待;应按峰值1–2分钟写入量设置,需停库删除旧日志后重启生效。为什么 innodb_log_file_size 太小会让事务…...

Path of Building终极指南:免费离线Build规划工具让《流放之路》角色构建变得简单

Path of Building终极指南:免费离线Build规划工具让《流放之路》角色构建变得简单 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding Path of Building&#xff…...

ComfyUI节点化工作流高效应用全流程指南:从基础搭建到创意实现

ComfyUI节点化工作流高效应用全流程指南:从基础搭建到创意实现 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 当…...

Android Studio中文语言包快速上手实用指南

Android Studio中文语言包快速上手实用指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack Android Studio作为主流的Android开发…...

3分钟解锁B站缓存:m4s-converter让视频播放不再受限

3分钟解锁B站缓存:m4s-converter让视频播放不再受限 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的情况&#xf…...

效率提升:用快马ai一键生成直播数据监控与管理面板代码

最近在开发直播后台管理工具时,发现很多功能模块其实都有固定套路。比如数据看板、弹幕管理这些常见需求,每次都要从零开始写类似的代码结构,特别浪费时间。后来尝试用InsCode(快马)平台的AI生成功能,效率直接翻倍。 1. 为什么需…...