【数据结构】链表结构 如何 头插 尾插入 增删改查 操作
基本概念数据结构存储一种或者多种特定关系的数据集合如何组织和存储程序设计数据结构算法数据与数据之间的关系逻辑结构数据元素与元素之间的关系集合数据元素与元素之间关系平等线性结构数据元素与元素支架确定一对一的关系顺序表数组链表队列栈树形结构元素与元素之间具有一对多的关系二叉数图形结构数据元素与元素之间多对多的关系A向上向下都可以检索到很多的数据元素物理结构顺序存储结构1.一个连着一个存储有连续性与顺序表数组时间复杂度为o12. 预算数据插入或者删除需要把删除位置后面的元素向前提一个地址3.访问元素效率高4.需要预分配空间可能造成空间浪费或者数组越界链式存储方式可以选取非连续的空间进行存储1.内存空间可以不连续2.插入和删除只需要 将上一个元素跟的指针指向插入元素的首地址比比较方便3.访问元素需要进行遍历4.不需要预分配内存空间可以根据数据动态储存散列存储哈希存储将要储存的元素用函数映射在内存上索引存储将要储存元关键字和储存诶之构建索引表数据的索引需要通过查表查找真正的数据地址单项链表API应用程序接口1. 创建链表2. 链表插入(头插、尾插)3. 链表删除头删、尾删4. 查找5. 修改6. 链表遍历7. 链表销毁在一下我会用图文的形式演示如何构造单列表其中我们可以把头节点也就是操作主链设置为一个结构体link_h * plink 那么plink就是头节点的首地址 其中存有 plink首地址 和 clean 链表的长度链表数据类型构造//链表结点类型 typedef struct node { int data; //数据域保存的数据 struct node *pnext; //指针域下一个结点的地址 }Node_t; //链表对象类型 typedef struct link { Node_t *phead; //链表头节点指针 int clen; //链表当前结点的个数 }Link_t;单向链表的创建当我们在创建的时候需要为头结点进行开辟堆上的空间进行储存然而在我们开辟node节点的时候也需要我们开辟一个malloc的储存空间去进行增加节点 并且头文件中需要增加#include《stdlib.h》单向链表尾插 Link_t *create_link() { Link_t *plink malloc(sizeof(Link_t)); if (NULL plink) { printf(malloc error\n); return NULL; } plink-phead NULL; plink-clen 0; return plink; }单向链表头插int insert_link_head(Link_t *plink, int data) { Node_t *pinsert malloc(sizeof(Node_t)); if (NULL pinsert) { printf(malloc error\n); return -1; } pinsert-data data; pinsert-pnext NULL; pinsert-pnext plink-phead; plink-phead pinsert; plink-clen; return 0;extern }单向链表尾插int insert_link_tail(Link_t *plink, int data) { Node_t *pinsert malloc(sizeof(Node_t)); if (NULL pinsert) { printf(mallocc error\n); return -1; } pinsert-data data; pinsert-pnext NULL; if (is_empty_link(plink)) { plink-phead pinsert; } else { Node_t *ptmp plink-phead; while (ptmp-pnext ! NULL) { ptmp ptmp-pnext; } ptmp-pnext pinsert; } plink-clen; return 0; }单向链表尾删int delete_link_tail(Link_t *plink) { if (is_empty_link(plink)) { return -1; } else if (NULL plink-phead) { free(plink-phead); plink-phead NULL; } else { Node_t *ptmp plink-phead; while (ptmp-pnext-pnext ! NULL) { ptmp ptmp-pnext; } free(ptmp-pnext); ptmp-pnext NULL; } plink-clen--; return 0; }内存泄露谨防就是要用户自己申请的堆区空间使用完没有及时释放则造成内存泄露。检测程序有没有内存泄露valgrind内存错误检测工具GNU提供可以检测程序运行过程中的内存泄露情况以及野指针的使用情况等。使用方法 在linux命令行进行输入valgrind a.out进行检测安装valgrind工具sudo apt-get isntall valgrind 编译完程序后使用 valgrind ./a.out valgrind --leak-checkfull ./a.out 6742 HEAP SUMMARY: 6742 in use at exit: 112 bytes in 7 blocks 6742 total heap usage: 10 allocs, 3 frees, 1,168 bytes allocated 6742 6742 LEAK SUMMARY: 6742 definitely lost: 16 bytes in 1 blocks 6742 indirectly lost: 96 bytes in 6 blocks 6742 possibly lost: 0 bytes in 0 blocks 6742 still reachable: 0 bytes in 0 blocks 6742 suppressed: 0 bytes in 0 blocks 6742 Rerun with --leak-checkfull to see details of leaked memory

相关新闻

Zero-Shot与Few-Shot Prompting深度解析:机制、选型与实战避坑指南

Zero-Shot与Few-Shot Prompting深度解析:机制、选型与实战避坑指南

1. 从面试官视角看这道题:它到底在考什么?最近在帮团队面试提示词工程师,发现一个挺有意思的现象:几乎所有候选人都能说出“Zero-Shot是不给例子,Few-Shot是给几个例子”这个标准答案。但当我追问“为什么有时候给了例…

2026/10/20 6:00:52 阅读更多 →
GEO公司是什么?GEO公司选型攻略:概念解析+GEO优化服务商选型避坑FAQ 避坑篇

GEO公司是什么?GEO公司选型攻略:概念解析+GEO优化服务商选型避坑FAQ 避坑篇

来源:河北青年报 字体:小中大 分享到: 2026 07/06 13:45:09 2026 年生成式 AI 搜索全面渗透用户决策链路,传统单一 SEO 优化已难以覆盖品牌全域流量需求,GEO 生成式引擎优化成为企业线上获客的核心新增赛道。当下多数企…

2026/10/16 7:42:21 阅读更多 →
AI训练数据查询与退出机制:从本地模拟到通用实践

AI训练数据查询与退出机制:从本地模拟到通用实践

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。我一般会先确认它到底解决什么问题,是本地部署、数据管理,还是特定场景的自动化。从标题和热词来看,这似乎涉及AI模型训练、数据选择(opt-out&am…

2026/10/16 2:12:24 阅读更多 →

最新新闻

腾讯云ASR实时语音识别前端接入:WebSocket签名与音频处理实战

腾讯云ASR实时语音识别前端接入:WebSocket签名与音频处理实战

前阵子我在给一个内部工具加“实时转写”功能,要把对话语音实时转成文字用于内容分析。调研了一圈,最后选了腾讯云 ASR 实时语音识别。原本以为就是“拿麦克风录音,发到 WebSocket,收文本”三件事,实际做下来发现每个环…

2026/10/21 3:54:34 阅读更多 →
Linux V4L2视频采集四步流程:打开→查询→设置→启动

Linux V4L2视频采集四步流程:打开→查询→设置→启动

1. 项目概述:为什么V4L2是Linux视频设备的“底层语言”在Linux系统里,但凡你接触过USB摄像头、树莓派CSI模组、工业面阵相机,甚至某些PCIe采集卡,几乎绕不开一个词:V4L2。它不是某个具体软件,也不是命令行工…

2026/10/21 3:54:34 阅读更多 →
Flutter GestureDetector 手势系统深度解析:从原理到高性能实践

Flutter GestureDetector 手势系统深度解析:从原理到高性能实践

1. 为什么说 GestureDetector 是 Flutter 手势世界的“总开关”在 Flutter 开发中,你写过多少次onTap?又是否曾疑惑:明明只是点了一下屏幕,背后却触发了onTapDown、onTapUp、onTapCancel一整套回调?或者,你…

2026/10/21 3:54:34 阅读更多 →
Qwen2.5-VL跨硬件微调:LoRA与OFT在昇腾910B与4090上的实战

Qwen2.5-VL跨硬件微调:LoRA与OFT在昇腾910B与4090上的实战

这个项目的起因很现实:手上的多模态微调代码在单张4090上调得好好的,业务方突然要求国产算力平台也能跑,而基于Qwen2.5-VL的私域图像理解任务又必须保留原有效果。于是就有了标题里那条主线——从LoRA到OFT,从昇腾910B到4090&…

2026/10/21 3:54:34 阅读更多 →
深入Linux内存管理:伙伴系统与slab分配器核心原理

深入Linux内存管理:伙伴系统与slab分配器核心原理

前段时间在压测一个存储服务时,我发现一个奇怪的现象:明明内存总量还很充足,但每次接口申请一个8KB的连续块时,耗时总会偶发冲到几百微秒甚至毫秒级。查到最后,问题不在业务代码,而在内存管理这一层——更具…

2026/10/21 3:54:34 阅读更多 →
FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg输入源处理:本地文件与网络流读取的底层逻辑与实战

FFmpeg 这个工具,刚接触音视频开发的人往往会被它庞大的参数体系劝退,但真正用起来之后又会发现,很多看似复杂的需求,其实一条命令就能搞定。这次要聊的是 FFmpeg 读取本地文件和网络流这两种输入源的处理方式,属于系列…

2026/10/21 3:53:34 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

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

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →