大纲概览
本学习路径将数据结构与算法的知识体系划分为三个核心阶段。下面的图表展示了每个阶段包含的学习模块数量,助您直观了解学习任务的分布。点击左侧导航或向下滚动,开始您的学习之旅吧!
阶段一:基础与线性结构
这是学习数据结构的起点。本阶段将重点掌握最基本、最常用的线性数据结构,并建立算法效率分析的核心思想。熟练运用 C 语言的指针和内存管理是学好本章的关键。点击下方的卡片查看每个模块的详细学习要点。
1. 基本概念与分析
核心知识点:
时间复杂度 ($O(n)$) 与空间复杂度的分析与计算。
刷题/实践重点:
尝试分析简单循环和递归的时间复杂度。
2. 数组 (Array)
核心知识点:
数组的定义、内存分配和基本操作。动态数组(如 `malloc` 和 `realloc` 的应用)。
刷题/实践重点:
简单数组操作题、二分查找(在有序数组中)。
3. 链表 (Linked List)
核心知识点:
单向链表:定义、节点结构、插入、删除、遍历。C 语言中的结构体 (`struct`) 和指针 (`*`) 的熟练应用。
刷题/实践重点:
实现链表的反转、节点的删除、链表中环的检测。
4. 栈 (Stack)
核心知识点:
栈的基本概念(LIFO:后进先出)。基于数组和基于链表的两种实现。
刷题/实践重点:
括号匹配问题、表达式求值(中缀转后缀)。
5. 队列 (Queue)
核心知识点:
队列的基本概念(FIFO:先进先出)。循环队列(数组实现的关键)。
刷题/实践重点:
广度优先搜索 (BFS) 的简单应用(用队列实现)。
阶段二:树与非线性结构
在掌握了线性结构后,我们将进入更复杂的非线性世界。本阶段的核心是理解树形结构,特别是二叉树及其各种操作。递归思想在这里将被频繁使用。同时,我们将学习哈希表这一极其高效的数据结构。
6. 树的基本概念
核心知识点:
树的定义、度、深度、节点等概念。二叉树的定义与性质。
刷题/实践重点:
理解树和二叉树的区别。
7. 二叉树的遍历
核心知识点:
前序、中序、后序遍历(递归和非递归实现)。层次遍历(利用队列)。
刷题/实践重点:
实现二叉树的各种遍历。计算树的深度。
8. 查找树
核心知识点:
二叉搜索树 (BST):定义、插入、删除、查找操作。平衡查找树(了解 AVL 或红黑树)。
刷题/实践重点:
实现 BST 的基本操作。
9. 堆 (Heap)
核心知识点:
堆的定义(大顶堆 / 小顶堆)。基于数组的完全二叉树实现。堆化 (Heapify) 操作。
刷题/实践重点:
优先级队列的实现。Top K 问题。
10. 哈希表 (Hash Table)
核心知识点:
哈希函数的设计思想。哈希冲突的解决方式(链地址法等)。
刷题/实践重点:
两数之和等需要快速查找的题目。
阶段三:算法核心与高级结构
这是从“数据结构”向“算法”思想的全面进阶。本阶段将系统学习各类经典排序算法、图结构及其相关算法,并深入探索动态规划、贪心等高级算法设计策略。这部分内容是面试和解决复杂问题的核心竞争力所在。
11. 排序算法 (Sorting)
核心知识点:
高效排序:快速排序、归并排序、堆排序的 C 语言实现与性能分析。
刷题/实践重点:
实现所有主要排序算法。
12. 图 (Graph)
核心知识点:
存储方式:邻接矩阵、邻接表。图的遍历:深度优先搜索 (DFS)、广度优先搜索 (BFS)。
刷题/实践重点:
图的连通性判断、迷宫问题 (DFS/BFS)。
13. 图算法
核心知识点:
最小生成树 (Prim/Kruskal)。最短路径 (Dijkstra/Floyd-Warshall)。
刷题/实践重点:
实现一个简单的最短路径算法。
14. 动态规划 (DP)
核心知识点:
动态规划的思想(最优子结构、重叠子问题)。经典 DP 模型:背包问题、最长公共子序列。
刷题/实践重点:
解决中等难度的背包、子序列问题。
15. 贪心算法 (Greedy)
核心知识点:
贪心算法的特点与适用条件。
刷题/实践重点:
解决简单的找零或活动选择问题。
16. 回溯与分支限界
核心知识点:
回溯法的基本思想(用于搜索解空间)。经典问题:N 皇后。
刷题/实践重点:
用 C 语言实现 N 皇后问题。