一个基于Qt框架开发的数据结构算法可视化实验平台,包含多个经典数据结构算法的图形化实现。
本项目是东北大学数据结构课程实验的综合实现,采用模块化设计思想,不使用STL库,所有基础数据结构均由团队成员自主实现。平台提供直观的图形界面,支持算法可视化演示和性能分析。
平台包含以下四个核心实验模块:
- 约瑟夫环问题 - 双向循环链表实现
- 四则表达式求值 - 中缀转后缀表达式并求值
- 校园光纤管网铺设 - 最小生成树算法(Prim/Kruskal)
- 快速排序与归并排序比较 - 排序算法性能分析
- 顺序表 (
SqList) - 动态数组实现 - 双向链表 (
DoubleList) - 双向循环链表 - 双端队列 (
LinkDeque) - 队列的扩展实现 - 栈结构 (
SqStack,DStack) - 顺序栈和双精度栈 - 图结构 (
MGraph) - 邻接矩阵表示
- 编程语言: C++11
- GUI框架: Qt5 (Widgets, Core)
- 构建系统: CMake 3.5+
- 开发平台: Windows (支持跨平台)
- Qt 5.x 或更高版本
- CMake 3.5 或更高版本
- C++11 兼容的编译器 (GCC/Clang/MSVC)
-
克隆仓库
git clone https://github.com/academicianmu/datastructure.git cd datastructure -
创建构建目录
mkdir build cd build -
配置项目
cmake ..
-
编译
cmake --build . --config Release -
运行程序
# Windows ./DataStructureLab.exe # Linux/macOS ./DataStructureLab
算法特点:
- 使用双向循环链表实现
- 支持顺时针/逆时针交替轮转
- 实时可视化出列过程
核心功能:
- 自定义人数N和步长M
- 动态演示出列过程
- 显示最终优胜者和完整出列序列
算法特点:
- 中缀表达式转后缀表达式
- 后缀表达式求值
- 支持四则运算和括号
核心功能:
- 实时表达式解析
- 步骤可视化
- 错误检测和提示
算法特点:
- Prim算法实现
- Kruskal算法实现
- 图形化展示生成过程
核心功能:
- 校园地图建模
- 边权重可视化
- 最优路径高亮显示
算法特点:
- 快速排序实现
- 归并排序实现
- 性能指标对比
核心功能:
- 大数据集测试 (50000条记录)
- 时间复杂度分析
- 可视化排序过程
datastructure/
├── CMakeLists.txt # CMake构建配置
├── README.md # 项目说明文档
├── src/ # 源代码目录
│ ├── main.cpp # 程序入口
│ ├── main_window.cpp # 主窗口实现
│ ├── *.cpp # 各模块实现文件
│ └── *.h # 头文件
├── include/ # 数据结构库头文件
│ ├── linkedlist.h # 链表实现
│ ├── stack.h # 栈实现
│ ├── sequencelist.h # 顺序表实现
│ └── ... # 其他数据结构
├── ui/ # UI文件目录
└── build/ # 构建输出目录
- 创建数据结构 - 在
include/目录下添加头文件 - 实现算法逻辑 - 在
src/目录下添加实现文件 - 创建GUI界面 - 继承Qt窗口类
- 注册到主程序 - 在
main_window.cpp中添加按钮和事件处理
- 遵循Qt编码规范
- 使用驼峰命名法
- 添加必要的注释
- 模块化设计,低耦合高内聚
| 算法 | 平均时间复杂度 | 最坏时间复杂度 | 空间复杂度 |
|---|---|---|---|
| 快速排序 | O(n log n) | O(n²) | O(log n) |
| 归并排序 | O(n log n) | O(n log n) | O(n) |
| Prim算法 | O(V²) | O(V²) | O(V) |
| Kruskal算法 | O(E log E) | O(E log E) | O(E) |
基于50000条随机数据的性能测试结果详见实验报告。
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
如有问题或建议,请通过以下方式联系:
- 提交 Issue: GitHub Issues
- 邮箱: mouyz@mails.neu.edu.cn
感谢东北大学计算机科学与技术学院提供的数据结构课程实验平台,以及Qt社区提供的优秀GUI框架。
⭐ 如果这个项目对你有帮助,请给它一个星标!