基于 CLion + CMake 的 408 考研数据结构刷题环境。每个 .cpp 文件都是独立可执行单元,在 CLion 中可以像脚本一样一键运行。
408_DataStructureExercises/
├── CMakeLists.txt # CMake 配置(自动扫描所有 .cpp 并生成运行目标)
├── common/ # 公共头文件
│ ├── common.h # 宏定义、测试断言、状态码等
│ └── template.cpp # 新习题模板(复制到对应章节即可使用)
├── ch02_linear_list/ # 第2章 线性表
├── ch03_stack_queue/ # 第3章 栈和队列
├── ch04_string/ # 第4章 串
├── ch05_tree/ # 第5章 树与二叉树
├── ch06_graph/ # 第6章 图
├── ch07_search/ # 第7章 查找
└── ch08_sort/ # 第8章 排序
用 CLion 打开本目录,IDE 会自动识别 CMakeLists.txt 并加载项目。首次加载时会自动运行 CMake,扫描所有 .cpp 文件并为每个文件生成一个运行目标。
- 方式一:打开任意
.cpp文件,点击main()函数左侧的绿色 ▶ 图标,选择 "Run"。 - 方式二:在顶部运行配置下拉框中,选择对应的目标名(如
ch02_linear_list_seq_list_static),然后点击运行。 - 方式三:在项目树中右键
.cpp文件 → "Run"。
# 复制模板到目标章节
cp common/template.cpp ch02_linear_list/my_exercise.cpp然后在 CLion 中点击 Tools → CMake → Reload CMake Project(或按 Ctrl+Shift+O),新的运行目标就会自动出现。
每个习题文件遵循统一的格式:
- 数据结构定义 —— 定义本题需要的结构体
- 函数声明 —— 声明需要实现的操作(附行为契约注释)
- 函数实现 —— 填写你的代码(桩实现仅保证编译通过)
- 测试入口 ——
main()中编写测试用例验证正确性
文件开头的桩实现保证文件可以立即编译运行(虽然测试不通过),方便你先理解题目需求再动手。
test(expr) // 断言 expr == true,打印 PASS/FAIL
test_msg(expr, msg) // 同上,附带自定义消息
hr() // 打印分隔线| 章节 | 内容 |
|---|---|
| ch02 | 线性表(顺序表、链表) |
| ch03 | 栈、队列(顺序/链式存储、应用) |
| ch04 | 串(模式匹配 KMP 等) |
| ch05 | 树与二叉树(遍历、线索树、哈夫曼树、并查集) |
| ch06 | 图(存储、遍历、最小生成树、最短路径、拓扑排序、关键路径) |
| ch07 | 查找(顺序、折半、BST、AVL、B 树、散列表) |
| ch08 | 排序(插入、交换、选择、归并、基数) |