一文吃透单向链表:定义、查找、插入、删除全套 C 代码实现
简介链表是一个线性数据结构由一系列的结点组成每个结点包括两个部分一个是存储数据元素的数据域另一个是存储下一个结点地址的指针域节点动态分配长度可变。常见类型单向链表singly、双向链表doubly、循环链表circular。用途需要频繁在中间插入/删除的场景很合适。链表可用于实现数据队列。队列Queue是一种抽象数据类型ADT遵循 FIFO先进先出规则。只在队尾插入enqueue只在队头删除dequeue。队列可以用数组循环缓冲或链表实现。一、单向链表的数据定义单向链表也叫单链表是链表中最简单的一种形式它的每个节点包含两个域一个信息域元素域和一个链接域。这个链接指向链表中的下一个节点而最后一个节点的链接域则指向一个空值。单向链表是一种线性表实际上是由节点Node组成的一个链表拥有不定数量的节点。其数据在内存中存储是不连续的它存储的数据分散在内存中每个结点只能也只有它能知道下一个结点的存储位置。由N各节点Node组成单向链表每一个Node记录本Node的数据及下一个Node。向外暴露的只有一个头节点Head我们对链表的所有操作都是直接或者间接地通过其头节点来进行的。链表的数据定义代码如下//单向链表定义 typedef struct LNode *List; struct LNode { ElementType Data; List Next; }二、获取单向链表长度具体代码实现如下//获取单向链表长度 int Length(List Pstart) { List p Pstart; int j 0; while(p) { p p-Next; j; } return j; }三、单向链表查找数据3.1 按序号查找代码实现如下//1.按序号查找 int FindK(int K, List Ptrl) { List p Ptrl; int i 0; while((p ! NULL) (i K)) { P P-Next; i; } if(i K) { return p; } else { return NULL; } }3.2 按值查找代码实现如下//2.按值查找 int Find(ElementType Val, List Ptrl) { List p Ptrl; while((p ! NULL) (p-Data ! Val)) { p p-Next; } return p; }四、单向链表插入在第i-11≤i≤n1个结点后插入一个值为X的新结点。1.先构造一个新结点用s指向2.再找到链表的第i-1个结点用p指向3.然后修改指针插入结点p之后插入新结点是s。链表插入过程如下图所示程序实现如下//单向链表插入在第i-11≤i≤n1个结点后插入一个值为X的新结点 List Insert(ElementType X,int i,List Ptrl) { List P,S; if(i 1) //新结点插入在表头 { S (List)malloc(sizeof(stroct LNode)); //申请、填装结点 S-Data X; S-Next Ptrl; return S; //返回表头指针 } P Find(i-1,Ptrl); //查找第i-1个结点 if(P NULL) //第i-1个不存在不能插入 { printf(参数i错\r\n); return NULL; } else { S (List)malloc(sizeof(struct LNode)); S-Data X; S-Next P-Next; //新结点插入在第i-1个结点的后面 P-Next S; return Ptrl; } }五、删除删除链表的第i1≤i≤n个位置上的结点。1.先找到链表的第i-1个结点用p表示2.再用指针s指向要删除的结点p的下一个结点3.然后修改指针删除s所指向的结点4.最后释放s所指向结点的内存空间。链表删除过程如下图所示程序实现如下//删除删除链表的第i1≤i≤n个位置上的结点 List Delete(int i,List Ptrl) { List p,s; if(i 1) //若删除的是表的第一个结点 { s Ptrl; //s指向第一个结点 if(Ptrl ! NULL) { Ptrl Ptrl-Next; //从链表中删除 } else { return NULL; } free(s); //释放被删除的结点 return Ptrl; } p Find(i-1,Ptrl); //查找第i-1个结点 if(p NULL) { printf(第%d个结点不存在,i-1); return NULL; } else if(p-Next NULL) { printf(第%d个结点不存在,i); return NULL; } else { s p-Next; //s指向第i个结点 p-Next s-Next; //从链表中删除结点s free(s); //释放被删除的结点s return Ptrl; } }六、总结链表的知识点初学起来感觉很抽象开始时可以先把链表的定义、查找、插入、删除这些基本操作用代码敲一下然后最好是实际应用一下找一个例程把需要处理的数据通过链表存储起来数据的查找、更新数据插入、删除旧的数据等这些操作都实践一下只有用了才能真正理解链表只学习概念理论没什么用。

相关新闻

很多企业不是缺人才,而是缺阵型

很多企业不是缺人才,而是缺阵型

企业一遇到瓶颈,老板最容易说的就是:缺人。 缺人怎么办?很多企业不是先研究任务,而是先做人才盘点。 人才盘点怎么做?给员工打分。 高潜、中坚、待优化……标签贴得整整齐齐,但一问“下季度的仗怎么打&a…

2026/7/28 2:14:30 阅读更多 →
Akagi:5分钟快速上手的终极麻将AI教练,从新手到高手全攻略

Akagi:5分钟快速上手的终极麻将AI教练,从新手到高手全攻略

Akagi:5分钟快速上手的终极麻将AI教练,从新手到高手全攻略 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Rii…

2026/7/28 2:14:30 阅读更多 →
3分钟快速掌握Locale Remulator:Windows系统区域语言模拟终极指南

3分钟快速掌握Locale Remulator:Windows系统区域语言模拟终极指南

3分钟快速掌握Locale Remulator:Windows系统区域语言模拟终极指南 【免费下载链接】Locale_Remulator System Region and Language Simulator. 项目地址: https://gitcode.com/gh_mirrors/lo/Locale_Remulator Locale Remulator是一款专业的Windows系统区域和…

2026/7/28 2:14:30 阅读更多 →

最新新闻

机器人竞赛执行机构选型实战:步进与直流电机深度解析及驱动电路设计

机器人竞赛执行机构选型实战:步进与直流电机深度解析及驱动电路设计

1. 项目概述:从“能动”到“动好”的跨越搞机器人大赛,尤其是像睿抗这类综合性的开发者大赛,最让人头疼的往往不是算法和代码,而是让机器人“动起来”这个最基础、也最要命的问题。上篇我们聊了动力系统的整体框架和能源部分&…

2026/7/28 2:32:36 阅读更多 →
TileLang与TVM:基于DSL的GPU内核自动生成与优化实践

TileLang与TVM:基于DSL的GPU内核自动生成与优化实践

在实际深度学习和高性能计算项目中,直接编写 CUDA 内核来优化 GPU 计算既复杂又容易出错。TileLang 作为一种基于 Python 的高级领域特定语言(DSL),允许开发者使用更直观的语法描述计算和数据分块(Tiling)策…

2026/7/28 2:32:36 阅读更多 →
HarmonyOS应用开发实战:猫猫大作战-setInterval 定时器、100ms 物理周期、主循环与 ArkUI 帧的协同、暂停时短路返回

HarmonyOS应用开发实战:猫猫大作战-setInterval 定时器、100ms 物理周期、主循环与 ArkUI 帧的协同、暂停时短路返回

前言 游戏和静态 UI 的本质区别是——UI 是事件驱动的(用户点击才更新),游戏是时间驱动的(每帧更新物理,无论用户是否交互)。ArkUI 没有内置「游戏循环」,需要开发者用 setInterval 自己搭主循…

2026/7/28 2:32:36 阅读更多 →
魔兽争霸3终极兼容性修复工具:WarcraftHelper让你的经典游戏焕然新生

魔兽争霸3终极兼容性修复工具:WarcraftHelper让你的经典游戏焕然新生

魔兽争霸3终极兼容性修复工具:WarcraftHelper让你的经典游戏焕然新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现…

2026/7/28 2:32:36 阅读更多 →
如何让数字PDF拥有真实扫描质感:3分钟快速解决方案

如何让数字PDF拥有真实扫描质感:3分钟快速解决方案

如何让数字PDF拥有真实扫描质感:3分钟快速解决方案 【免费下载链接】lookscanned.io 📚 LookScanned.io - Make your PDFs look scanned 项目地址: https://gitcode.com/gh_mirrors/lo/lookscanned.io 你是否曾为数字生成的PDF文档太过"完美…

2026/7/28 2:32:35 阅读更多 →
视觉SLAM核心技术实战:从稀疏特征到稠密建图的完整工程方案

视觉SLAM核心技术实战:从稀疏特征到稠密建图的完整工程方案

视觉SLAM核心技术实战:从稀疏特征到稠密建图的完整工程方案 【免费下载链接】slambook2 edition 2 of the slambook 项目地址: https://gitcode.com/gh_mirrors/sl/slambook2 在自动驾驶、机器人导航和增强现实等前沿技术领域,如何让机器仅凭视觉…

2026/7/28 2:31:35 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻