
数据结构与算法详解
文章平均质量分 89
学习一件事必须知其然还要知其所以然,写代码也是如此,首先一定一定要清晰业务层,理顺逻辑,不可模糊编程。同理,数据结构并不是书本上“死的知识”,而是“活的数据流动”。在这个过程中,我们要掌握数据结构的底层原理和设计思路,结合应用场景,向你说明。
猫猫的小茶馆
用心做开发。专注于嵌入式技术,熟悉linux驱动开发,Linux系统搭建与移植,fpga,dsp,arm开发,pcb工艺,汇集了工作多年遇到的问题,与一些总结,有些是linux内核的源码级别的讲解,同时整个博客构建成了嵌入式的知识体系,专注于服务从事嵌入式软件开发的朋友。
展开
-
【数据结构】航班查询系统:链表的实际运用
方案一(单向链表实现)文件:flight.c文件:flight.h主函数:main.c方案二(双向链表实现)文件:flight_cyc.c文件:flight_cyc.h文件:main_cyc.c方案三(内核链表实现)文件:flight_kernel.c文件:flight_kernel.h文件:main_kernel.c以上代码经过测试,可以直接复制粘贴即可使用,希望该内容对您有帮助,感谢!以上。仅供学习与分享交流,请勿用于商业用途!转载需提前说明。我是一个十分热爱技原创 2025-01-09 23:03:34 · 487 阅读 · 0 评论 -
【算法】算法大纲
包括 计数原理、数组、树型结构、链表递归栈、查找排序、管窥算法、图论、贪心法和动态规划、以及概率论:概率分治和机器学习。没有办法逐个说明,算法本身错综复杂,不同的算法对应着不同的实用场景,也需要根据具体情况设计与调整。介绍仅仅提供了一个整体知识结构树,有利于在后期系统性的思维框架。原创 2025-01-08 21:19:24 · 1060 阅读 · 0 评论 -
【算法】八大排序算法
这篇文章是对数据结构中的详解,包括其及其适用场景。最后两种排序不常见,但仍收录了进来保持文章结构的完整性。排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。升序 或 降序 —> 一般都是对数据进行升序排列(从小到大排序)。对文件(File)进行排序有重要的意义。如果文件按key有序,可对其折半查找,使查找效率提高;在数据库(Data Base)和知识库(Knowledge Base)等系统中,一般要建立若干索引文件,就牵涉到排序问题;原创 2025-01-08 18:32:58 · 966 阅读 · 0 评论 -
【算法】算法初步
要学好数据结构和算法的设计与分析,请务必先打好C语言基础,因为C语言中的数据存储、内存映射、指针等等概念最接近计算机的底层原理,数据结构是数据在内存空间当中的组织形式,而算法则是提供了解决某个问题的一种思路,而数据结构与算法设计一定会涉及到最核心的部分:提升性能 —— 时间和空间的问题。如果有一个好的算法,它的执行时间很短,占用空间很小,数据结构的组织形式最优,这才是我们想要看见的结果。原创 2025-01-06 19:56:29 · 2133 阅读 · 0 评论 -
【算法】查找与排序
这篇文章主讲算法中的数据查找。查找是数据结构中最基本的操作之一,用于从给定的数据集合中找到特定的目标数据。查找的效率直接影响程序的性能,选择合适的查找方法取决于数据的组织形式和应用场景。原创 2025-01-06 22:11:51 · 881 阅读 · 0 评论 -
【数据结构】树
二叉树(Binary Tree)是n(n≥0)个节点的有限集合,它或者是空集(n=0),或者是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。二叉树与普通有序树不同,二叉树严格区分左孩子和右孩子,原创 2025-01-06 12:43:25 · 1446 阅读 · 0 评论 -
【数据结构】链式队列
链式队列(Linked Queue)是使用链表实现的队列,它克服了顺序队列中的假溢出问题,并且,通过动态分配内存,链式队列可以灵活地调整队列大小,不受固定容量限制。原创 2025-01-03 22:06:57 · 968 阅读 · 0 评论 -
【数据结构】栈与队列(FIFO)
在阅读该篇文章之前,可以先了解一下堆栈寄存器和栈帧的运作原理:原创 2025-01-03 21:17:52 · 679 阅读 · 0 评论 -
【数据结构】链表(3):Linux 的内核链表
/ 内核链表头文件(假设 `list.h` 中定义了 Linux 链表的相关宏和函数)// 定义任务结构体// 任务 ID// 任务优先级// 任务状态(running, waiting, completed)// 链表节点,用于将任务加入链表。原创 2025-01-02 22:33:19 · 1226 阅读 · 0 评论 -
【数据结构】链表(2):双向链表和双向循环链表
双向循环链表提供了灵活的正向和反向遍历功能,同时保持循环特性,适合需要频繁插入、删除并支持循环操作的场景。代码实现中考虑了各种边界条件(如链表为空、只有一个节点等),确保程序安全性。支持从任意节点向前或向后遍历。原创 2025-01-02 14:48:52 · 429 阅读 · 0 评论 -
【数据结构】顺序表和链表优劣的对比分析
顺序表和链表是两种常见的线性表实现方式,各自有不同的特点、优缺点和适用场景。这篇文章是两者的详细对比和适用场景分析。原创 2024-12-30 20:28:19 · 1186 阅读 · 0 评论 -
【数据结构】链表(1):单向链表和单向循环链表
将线性表中各元素分布在存储器的不同存储块,称为结点。通过指针或地址建立起它们之间的联系,所得到的存储结构就是链表。链表都有一个头结点(一般不保存数据,不做遍历),是链表的入口。链表呈现一对一关系,且有一个前驱结点和一个后继结点。每一个结点都往堆申请了地址,由多个堆组成。原创 2024-12-30 20:09:19 · 1377 阅读 · 0 评论 -
【数据结构】顺序表
特点:连续存储:顺序表使用一段连续的内存空间存储元素。随机访问:通过数组下标可以快速访问任意位置的元素,时间复杂度为O(1)。固定容量:由于内存是连续分配的,表的容量在初始化时固定,动态扩容需要额外操作。插入和删除效率插入和删除操作需要移动元素(平均时间复杂度为O(n)),尤其是在表头或表中间操作时。插入和删除效率低于链表,但顺序表通过连续存储可以更高效地利用 CPU 缓存。数据量较小,或者数据存储后不会频繁插入和删除。需要快速随机访问数据的场景(如数组、固定大小的队列/栈等)。原创 2024-12-26 23:50:19 · 934 阅读 · 0 评论 -
【数据结构】数据结构整体大纲
1. 数组(Array)作用:存储固定大小的连续数据,支持随机访问。解决的问题:快速按索引访问数据。应用场景实现栈、队列。存储二维或多维矩阵数据(如图像处理)。动态数组(如 C++ 的和 Python 的list2. 链表(Linked List)作用:通过节点链式存储数据,支持动态插入和删除。解决的问题:在不知道数据大小或需要频繁插入/删除时提供灵活的存储方式。种类单向链表、单向循环链表、双向链表、双向循环链表、内核链表。应用场景内存管理(如空闲内存块管理)。原创 2024-12-21 21:17:22 · 1616 阅读 · 0 评论