最近在嵌入式学习路上迈出了数据结构的第一步。以前写 C 语言只是完成简单功能慢慢意识到想要写出高效、规整的嵌入式程序只懂语法远远不够。程序 数据结构 算法今天就从最底层的概念开始入门梳理我的学习笔记。一、什么是数据结构简单来说数据结构就是存储具有一种或者多种特定关系的数据集合解决如何组织和存储数据的问题。一句经典总结程序设计 数据结构 算法。如果把算法理解成解决问题的思路数据结构就是我们存放数据的容器容器选得合适整个程序的运行效率会有很大提升这一点在资源有限的嵌入式设备中尤为重要。二、两大核心逻辑结构 物理结构数据结构分为逻辑结构、物理结构两大块一个描述数据之间的关系一个描述数据在内存怎么存放。1、逻辑结构元素和元素之间的关系2、物理结构内存实际存储方式存储类型核心特点典型例子顺序存储结构选取内存中连续的空间存储数组顺序表链式存储结构选取内存中非连续的空间存储链式表散列存储哈希存储元素和存储位置依靠哈希函数映射哈希表索引存储关键字和存储位置构建索引表依靠索引表查找数据✨顺序表与链式表特点对比顺序表链式表内存空间连续内存空间可不连续插入、删除数据需要移动大量后续元素操作不便插入和删除数据比较方便随机访问元素效率高访问元素需要从头遍历需要预先分配内存分配不当容易内存浪费、内存泄露不需要预先分配可以根据数据动态存储三、数据结构完整学习清单第一天先把整个学习地图记下来之后逐个知识点逐个攻破。顺序表单向链式表双向链表循环链表队列栈二叉树哈希表四、前置知识储备想要学好数据结构C 语言基础必不可少我整理了必须吃透的三块内容结构体指针动态内存分配今日学习小结今天没有直接上手写复杂算法而是先建立框架认知。嵌入式开发很多场景都会用到链表、哈希表来管理设备状态、缓存数据硬件的 RAM 资源十分宝贵选择合适的数据结构可以减少内存占用降低程序时间开销。接下来我会从顺序表开始动手敲代码把理论落地。