这是一个关于数据结构的项目,重点研究数组、链表、栈、队列、树和图等常见数据结构的设计、实现与应用。其目的是加深对数据结构基本概念的理解,掌握各类数据结构的核心操作(插入、删除、查找和遍历),并运用相关知识解决实际编程问题。
| 目录 | 实验类型 | 主题 |
|---|---|---|
part1/ |
验证实验 | 分块查找(索引顺序查找) |
part2/ |
设计实验 | 有向图路径搜索 |
part3/ |
综合实验 | 稀疏矩阵转置算法 |
# 编译全部项目
make all
# 交互式运行各项目(菜单驱动)
make run1 # Part1 分块查找
make run2 # Part2 图路径搜索
make run3 # Part3 稀疏矩阵转置
# 非交互式运行测试用例
make test1
make test2
make test3每个项目均支持以下三种交互模式(菜单选项):
| 选项 | 模式 | 说明 |
|---|---|---|
[1] |
屏幕交互模式 | 命令行输入参数,结果输出至屏幕 |
[2] |
文件交互模式 | 从输入文件读取参数,结果写入输出文件 |
[3] |
测试用例模式 | 运行预定义测试案例,结果同步到屏幕和文件 |
[0] |
退出 | 退出程序 |
Part1 文件 (从项目根目录运行时有效):
- 输入:
part1-input.txt,首行为查找关键字个数,之后每行一个关键字 - 输出:
part1-output.txt
Part2 文件:
- 输入:
part2-input.txt,首行为查询对数,之后每行src dst - 输出:
part2-output.txt
Part3 文件:
- 输入:
part3-input.txt,首行为rows cols,之后rows行每行cols个整数 - 输出:
part3-output.txt
各项目使用等价类划分与边界值分析方法设计测试案例:
Part1(分块查找)— 5个测试案例:
- TC1:正常案例 — key=46(存在,第3块)
- TC2:边界值 — key=6(最小元素,第1块)
- TC3:边界值 — key=100(最大元素,第5块)
- TC4:等价类 — key=50(不存在,在第3块范围内)
- TC5:边界值 — key=0(低于所有元素,查找失败)
Part2(图路径搜索)— 4个测试案例:
- TC1:正常案例 — src=5, dst=2(多条路径)
- TC2:正常案例 — src=5, dst=6(路径经过4→6)
- TC3:等价类 — src=2, dst=5(不可达,顶点2无出边)
- TC4:边界值 — src=1, dst=1(起点等于终点)
Part3(稀疏矩阵转置)— 4个测试案例:
- TC1:正常案例 — 6×6默认稀疏矩阵
- TC2:边界值 — 全零3×3矩阵(terms=0)
- TC3:等价类 — 2×3非方阵(rows≠cols)
- TC4:边界值 — 1×1矩阵(最小矩阵)