跳转至

数据结构与算法

课程边界

本页提供通用知识地图,不固定学分、学期、教师、培养性质、实现语言、实验项目或成绩占比。正式先修与考核要求以本人培养方案和当年课程通知为准。

核心内容

  • 线性结构:顺序表、链表、栈、队列及其典型操作。
  • 树结构:二叉树、堆、二叉搜索树、AVL 树、红黑树、Huffman 树。
  • 多路搜索树:B 树与 B+ 树;它们不是红黑树的别名,常用于外存索引等场景。
  • 图结构:邻接矩阵/表、DFS、BFS、最小生成树、最短路径和拓扑排序。
  • 查找与排序:散列表、比较排序、非比较排序及稳定性等性质。
  • 复杂度分析:渐进记号、递推关系,以及时间与空间权衡。

具体教学班可能只覆盖其中一部分,或把 B/B+ 树等内容放到数据库课程中。

实践方式

常见练习包括实现基础容器、排序、图算法或一个综合应用,但语言和题目每年可能变化。不要把 Huffman 压缩、校园导航或文件索引写成当前固定大作业,也不要以往届源码和报告作为实现模板。

学习方法

  1. 为每种结构写清不变量、操作前后条件和复杂度,再实现代码。
  2. 用小规模输入手工推演树旋转、堆调整、排序划分和图算法状态变化。
  3. 为边界情况准备测试:空结构、单元素、重复键、退化树、非连通图和极端容量。
  4. 区分“会调用库”和“理解实现”;是否允许使用标准库由课程任务决定。

参考资料

  • Mark Allen Weiss:《Data Structures and Algorithm Analysis》:通用数据结构参考,使用 C 或 C++ 版本时注意接口差异。
  • VisuAlgo:用于观察算法过程;动画不能替代复杂度证明和独立实现。
  • 南京大学计算机学院课程体系:用于定位课程关系,不提供当前教学班考核细节。