发布时间:2026/8/14 22:03:51
【数据结构】链表结构 如何 头插 尾插入 增删改查 操作 基本概念数据结构存储一种或者多种特定关系的数据集合如何组织和存储程序设计数据结构算法数据与数据之间的关系逻辑结构数据元素与元素之间的关系集合数据元素与元素之间关系平等线性结构数据元素与元素支架确定一对一的关系顺序表数组链表队列栈树形结构元素与元素之间具有一对多的关系二叉数图形结构数据元素与元素之间多对多的关系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

相关新闻

2026/8/14 21:58:51

AI公司上市潮下,开发者如何构建抗风险的多模型调用架构

最近,AI领域的融资与上市动向,成了开发者圈子里一个绕不开的“技术风向标”。当看到“Anthropic拟九月上市,OpenAI或明年跟进”这样的标题时,很多人的第一反应可能是:这跟我写代码、调模型有什么关系?这难道…

2026/8/14 21:58:51

开源视频制作工具ZJT智剧通实战:从故事板到AI口型同步全流程指南

在视频创作和影视制作领域,从构思到成片,往往需要经历故事板绘制、分镜设计、视频剪辑与修改等多个复杂环节。对于独立创作者、小型工作室或学生团队而言,一套功能强大且成本可控的工具至关重要。近期,一款名为“ZJT智剧通”的开源…

2026/8/14 22:43:56

LLC半桥为什么不用数字逻辑硬件互锁,但必须要有死区时间?

核心原因:1、LLC控制方式是PFM调频,占空比固定50%。Buck/DAB;调节占空比/移相角;LLC只改变开关频率,每一路驱动固定接近50%占空比,两路天然互补。硬件逻辑互锁多用于占空比可变的PWM拓扑,防止占空比超过50%…

2026/8/14 22:43:56

2026年实测:10款热门电子合同排行榜全解析!

一、2026年的电子合同市场规模及发展 截至2025年,中国电子合同行业市场规模已达305.1亿元,2020至2025年间复合年增长率高达23.04%。签约量方面,2025年全国电子合同签约量达到2576.1亿份。从第三方电子签市场看,2025年总营收约95亿…

2026/8/14 22:43:56

艺术涂料极简风格怎么做才显高级?材质与留白逻辑

极简风以干净、克制、无多余装饰为核心,墙面是空间基调的承担者。君匠世家从材质与工艺两端建立极简方案,本文拆解其清爽高级的落地逻辑。极简的核心:少即是多极简风墙面要浅色、平整、低反光,把视觉重量交给光影与家具。纯色类的…

2026/8/14 22:43:56

基于LSP与本地AI模型构建智能编码助手:从原理到实践

1. 项目概述:从“Claude Code”到“TodoWrite”的平民化实践 最近在开发者社区里,“Claude Code”这个词的热度居高不下。无论是搜索“claude code安装教程”,还是遇到“npm install -g pnpm read econnreset”这类网络问题,都反…

2026/8/14 22:43:56

GitHub今日热榜 | 2026-08-13:AI 图表 Skill 空降榜首

昨日对比速览状态项目昨排今排变化新进cathrynlavery/diagram-design-1新进持续msitarzewski/agency-agents121→2持续stablyai/orca10310→3持续semantica-agi/semantica242→4新进paperclipai/paperclip-5新进新进hugohe3/ppt-master-6新进新进NVIDIA-NeMo/Switchyard-7新进新…

2026/8/14 22:38:56

JVM G1 回收器 RSet 与 PRT 深度解析

源码版本:OpenJDK 8u HotSpot(src/share/vm/gc_implementation/g1/) 关键词:G1、Remembered Set、Per Region Table、写屏障、Card Table、粗化(Coarsening)1. 背景:为什么 G1 需要 RSet G1&…

2026/8/14 4:27:24

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/14 4:27:24

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/14 0:00:09

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:09

VSCode高效Git管理:从入门到实战技巧

1. 为什么选择VSCode进行Git代码管理作为微软推出的轻量级代码编辑器,Visual Studio Code(简称VSCode)已经成为全球开发者使用率最高的编辑器之一。根据2023年Stack Overflow开发者调查,VSCode的市场占有率高达74.48%。它内置的Gi…

2026/8/14 4:27:24

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/14 4:27:24

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/14 4:27:24

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…