一文吃透单向链表:定义、查找、插入、删除全套 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/10/6 16:22:39 阅读更多 →
Akagi:5分钟快速上手的终极麻将AI教练,从新手到高手全攻略

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

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

2026/10/10 18:34:24 阅读更多 →
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/9/28 18:12:34 阅读更多 →

最新新闻

scale_up协议光链路可靠性设计:从感知到自愈的全栈协同

scale_up协议光链路可靠性设计:从感知到自愈的全栈协同

1. 项目概述:光链路可靠性不是“加个备份”就能解决的事“scale_up协议中针对光链路的可靠性设计”——这个标题乍看是通信协议层的技术细节,但背后牵动的是整个高速互连系统的命脉。我接触过多个采用scale_up架构的高性能计算集群项目,其中超…

2026/10/11 20:39:26 阅读更多 →
融光 ai-fusion-video 安全与认证:Spring Security Token 鉴权、用户角色与团队权限完整指南

融光 ai-fusion-video 安全与认证:Spring Security Token 鉴权、用户角色与团队权限完整指南

人工智能AI 应用大模型媒体生成AI Agent后端前端 【免费下载链接】ai-fusion-video 【融光】 - 基于 Agent 的全流程AI短剧/漫剧/视频创作平台 - Java & agentscope2.0 | Agent-based end-to-end AI creation platform for short dramas, motion comics, and videos – bui…

2026/10/11 20:39:26 阅读更多 →
ASP.NET五套实战项目拆解:登录权限、CRUD、分页与文件上传一次讲透

ASP.NET五套实战项目拆解:登录权限、CRUD、分页与文件上传一次讲透

简介:面向ASP.NET初学者的完整项目案例合集,内含5个从设计、编码到部署全流程的实战项目,覆盖C#编程、数据库交互、MVC模式、Entity Framework、Ajax及UI设计等核心知识点。适合正在学习ASP.NET Web Forms或MVC开发的学生与转行开发者&#x…

2026/10/11 20:39:26 阅读更多 →
Android教务数据桥接系统:轻量级本地化课表管理方案

Android教务数据桥接系统:轻量级本地化课表管理方案

简介:本资源是一套面向计算机相关专业本科生的Android毕业设计实战项目,聚焦高校课程电子化管理场景,为正在完成期末大作业或毕业设计的学生提供可直接复用的完整解决方案。压缩包共含论文、开发文档、数据库设计说明与可运行源码四大类内容&…

2026/10/11 20:39:26 阅读更多 →
从「准」到「实」再到「快」:中文图像生成的三次叙事转向意味着什么

从「准」到「实」再到「快」:中文图像生成的三次叙事转向意味着什么

从「准」到「实」再到「快」:中文图像生成的三次叙事转向意味着什么 【免费下载链接】Qwen-Image-2.1-Turbo 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen-Image-2.1-Turbo 过去一年,中文图像生成赛道的公共话题经历了三次肉眼可见的…

2026/10/11 20:39:25 阅读更多 →
Java后端接入SignalR:从HTTP到HTTPS的完整落地与避坑指南

Java后端接入SignalR:从HTTP到HTTPS的完整落地与避坑指南

简介:面向Java与Android开发者的SignalR实时通信客户端库源码包,用于在非浏览器环境中接入ASP.NET SignalR服务,实现服务器向客户端实时推送。ASP.NET SignalR是一套成熟的实时Web通信库,而这份Java客户端扩展了它的使用边界&…

2026/10/11 20:38:24 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →