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

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

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

2026/8/30 12:41:15 阅读更多 →
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/8/31 0:09:00 阅读更多 →

最新新闻

ChatGPT桌面版与Codex CLI启动报错排查:从环境配置到config.toml修复

ChatGPT桌面版与Codex CLI启动报错排查:从环境配置到config.toml修复

ChatGPT Ads 年化收入达到 10 亿美元并启动全球扩展,这个数字放在 AI 产品商业化里已经算得上标志性事件。但和这条新闻形成强烈反差的,是用户搜索栏里连续出现的高频问题:ChatGPT 桌面版打不开、unable to locate the codex cli binary、con…

2026/9/3 21:43:49 阅读更多 →
为何乐高新闻写不成技术博客?——选题与可复现原则

为何乐高新闻写不成技术博客?——选题与可复现原则

这个标题不适合直接改写成技术博客正文。原因是:输入材料只有“乐高意外泄露了2027/28年20款大套装计划”这一条新闻标题,没有项目正文、没有关键词、没有摘要描述、没有技术背景,也没有任何可复现的工程细节。这类内容属于消费产品新闻或营销…

2026/9/3 21:43:49 阅读更多 →
用VC和WinSock从零实现HTTP服务器:多线程与协议解析实战

用VC和WinSock从零实现HTTP服务器:多线程与协议解析实战

简介:一份基于Visual C与MFC框架实现的HTTP服务器程序工程,适合正在学习Windows网络编程、MFC界面开发或HTTP协议原理的C开发者参考。代码以可编译的工程形式提供,可直接在VC环境中打开,包含服务器主对话框、请求处理线程、Socket…

2026/9/3 21:43:49 阅读更多 →
《无敌少侠》第四季:征服者能否继续稳压马克与诺兰?

《无敌少侠》第四季:征服者能否继续稳压马克与诺兰?

先说结论:如果只看纸面战斗力,征服者到了第四季依然具备稳压马克和诺兰父子的基础条件;但如果看叙事逻辑,第四季大概率不会继续让他以“我不管怎么样都压着两个人打”的方式出现。说白了,超英作品的战斗力不是一维数值…

2026/9/3 21:43:49 阅读更多 →
超级蝶翼星曜屏值不值?TCL 75T7M Pro Mini LED电视选购解析

超级蝶翼星曜屏值不值?TCL 75T7M Pro Mini LED电视选购解析

TCL 75T7M Pro 是一台 75 英寸 Mini LED 电视,它在近期选购清单里出现频率很高,最吸引人的标签是“超级蝶翼星曜屏”。但要不要为这个屏幕多花预算,不能只看广告词,要看它在你家客厅环境里的真实价值。下面从画质原理、参数对比、…

2026/9/3 21:43:49 阅读更多 →
乐高2027/28年20款大套装泄露?先学会这套信息判断法

乐高2027/28年20款大套装泄露?先学会这套信息判断法

凌晨两点,一个长期潜水的玩家群里突然炸了。有人发了一张模糊的表格截图,说是乐高2027/28年的20款大套装计划,列着一串编号和几个没完全成像的系列名。评论区不到半小时就分成两派:一派在逐行辨认图片里残缺的字符,另一…

2026/9/3 21:42:48 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

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

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

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

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →