--- title: 数据结构与算法 tags: - topic - data-structure-and-algorithm - joplin type: topic source_type: reconstructed created: 2026-04-22 updated: 2026-04-27 aliases: - 数据结构与算法重构 --- # 数据结构与算法 > [!abstract] > 本主题重构自 `数据结构与算法` 系列笔记,重点不是背代码模板,而是把“数据如何组织、操作代价如何变化、算法为什么这样设计”整理成可复习的结构。 ## 这门主题在解决什么问题 - 为什么同样的问题,用不同数据结构会有完全不同的效率和实现难度。 - 线性结构、树、图等不同结构分别适合表达什么关系。 - 查找和排序为什么会成为算法题与基础课中的高频核心。 - 数据结构和算法复杂度如何共同决定程序性能。 ## 推荐复习顺序 1. [[线性结构]] 2. [[树与堆]] 3. [[图结构与遍历]] 4. [[查找]] 5. [[排序]] ## 模块地图 - [[线性结构]]:顺序表、链表、栈、队列、串,以及栈队列应用。 - [[树与堆]]:二叉树、二叉排序树、AVL 树、堆和它们的操作逻辑。 - [[图结构与遍历]]:邻接矩阵、邻接表、BFS、DFS 与图的表达方式。 - [[查找]]:顺序查找、折半查找、查找判定和查找结构选择。 - [[排序]]:插入、交换、选择、快速、堆等排序思路与复杂度比较。 ## 关键概念 - [[顺序表]] - [[链表]] - [[栈]] - [[队列]] - [[KMP]] - [[二叉树]] - [[堆]] - [[二叉排序树]] - [[AVL树]] - [[图]] - [[查找算法]] - [[排序算法]] ## 常见误区 - 把数据结构理解成“代码容器”,忽略它本质是数据关系和操作约束的抽象。 - 只背增删查改代码,不比较不同结构在时间复杂度和适用场景上的差异。 - 把栈和队列都当成线性表的小变种,却不抓住 LIFO / FIFO 的本质限制。 - 只会背树和图的遍历顺序,不理解遍历过程为何需要递归、栈或队列支撑。 - 把排序算法只按代码模板记忆,不比较稳定性、平均复杂度和适用输入特征。 ## 来源范围 - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/1.线性表的顺序存储实现.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/1.线性表 -- 顺序表.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/2.线性表 -- 单链表.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/3.线性表 -- 双链表.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/4.操作受限的线性表 -- 栈 -- 顺序栈.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/5.操作受限的线性表 -- 栈 -- 链栈.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/6.操作受限的线性表 -- 队列 -- 顺序队列.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/7.操作受限的线性表 -- 队列 -- 链队列.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/8.栈和队列的应用.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/9.串.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/11.图.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C++)数据结构与算法/12.二叉排序树.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/2.二叉树的实现和应用.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/3.堆--以最大堆为例.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/4.查找.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/5.二叉排序树.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/6.平衡二叉树(AVL树).md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/7.图.md]] - [[raw/Joplin/计算机专业基础/数据结构与算法/(C)840数据结构与算法/8.排序.md]] - [[raw/Documents/算法导论(原书第3版) (Thomas H.Cormen,Charles E.Leiserson etc.) (Z-Library)/算法导论(原书第3版) (Thomas H.Cormen,Charles E.Leiserson etc.) (Z-Library).md]] - [[raw/Documents/算法图解 ((美)巴尔加瓦(Aditya Bhargava)著, 袁国忠译) (Z-Library)/算法图解 ((美)巴尔加瓦(Aditya Bhargava)著, 袁国忠译) (Z-Library).md]] - [[raw/Documents/LeetCode 101 - A Grinding Guide/LeetCode 101 - A Grinding Guide.md]] - [[raw/Documents/数据结构、算法与应用 C++语言描述 原书第2版 (( MEI ) SA NI . WANG LI ZHU . LIU ZHI HONG) (Z-Library)/数据结构、算法与应用 C++语言描述 原书第2版 (( MEI ) SA NI . WANG LI ZHU . LIU ZHI HONG) (Z-Library).md]] ## 相关入口 - [[Documents资料库]] - [[joplin-overview]] - [[joplin-rebuild-schema]]