Skip to content

zhpy2004/Data-structure-visualization-simulator

Repository files navigation

数据结构可视化模拟器

这是一个基于Python和PyQt5的数据结构可视化模拟器,用于直观展示线性结构和树形结构的构建与算法执行的动态过程。该项目旨在帮助学习数据结构的学生更好地理解各种数据结构的工作原理和算法流程。

最新更新

  • 历史菜单新增:在主窗口菜单栏新增“历史”,提供“查看线性历史/查看树形历史/查看全部历史”
  • 历史记录时间戳:历史记录展示仅显示时间(HH:MM:SS),按时间顺序合并显示
  • 彩色高亮与等宽字体:历史对话框采用彩色高亮(时间/上下文/动词/数字/引号),等宽字体 20px,便于阅读与复制
  • 按钮操作自动映射 DSL:界面按钮触发的操作会自动映射为 DSL 并记录在历史中
  • 代码质量优化:全面更新了代码注释和文档字符串,提高了代码可读性和可维护性
  • 调试信息清理:移除了所有调试print语句,提升了程序运行的整洁性
  • 哈夫曼树频率数据保存修复:修复了哈夫曼树保存时频率数据丢失的问题,现在保存和加载哈夫曼树时能正确保留原始权重信息
  • 树结构加载页面切换修复:修复了加载树结构数据时不会自动切换到对应数据结构页面的问题
  • BST层序遍历功能:为二叉搜索树添加了层序遍历功能,支持完整的树结构保存
  • AVL树算法优化与动画增强:修正了AVL树插入再平衡逻辑(沿插入路径查找最近不平衡祖先),并实现了细粒度的旋转过程动画,逐步展示指针重挂与父子关系更新过程,极大提升教学演示效果

功能特点

线性结构可视化

  • 顺序表:支持创建、插入、删除、查找等操作的动态可视化
  • 链表:支持单链表的创建、插入、删除、遍历等操作的动态可视化
  • :支持顺序栈的创建、入栈、出栈操作的动态可视化

树形结构可视化

  • 二叉树:支持二叉树的创建、插入、删除以及前序/中序/后序/层序遍历的动态可视化
  • 二叉搜索树(BST):支持构建、查找、插入、删除操作的动态可视化
  • AVL树:支持自平衡二叉搜索树的创建、插入、删除操作,提供细粒度的旋转过程动画(分解为指针调整步骤),直观展示平衡逻辑
  • 哈夫曼树:支持基于给定权重构建哈夫曼树的过程可视化

交互式操作

  • 支持通过图形界面直接操作数据结构
  • 支持通过DSL(领域特定语言)批量执行操作
  • 支持动画速度调节和步进控制
  • 支持保存和加载数据结构,方便继续编辑和操作
  • 支持查看历史记录:菜单栏“历史”可查看线性/树形/合并的 DSL 操作记录(含时间戳、彩色高亮)

项目结构

├── models/              # 数据结构模型实现
│   ├── linear/          # 线性结构模型
│   │   ├── array_list.py    # 顺序表实现
│   │   ├── linked_list.py   # 链表实现
│   │   └── stack.py         # 栈实现
│   └── tree/            # 树形结构模型
       ├── binary_tree.py   # 二叉树实现
       ├── bst.py           # 二叉搜索树实现
       ├── avl_tree.py      # AVL树实现
       └── huffman_tree.py  # 哈夫曼树实现
├── views/               # 视图组件
│   ├── main_window.py   # 主窗口实现
│   ├── linear_view.py   # 线性结构视图实现
│   └── tree_view.py     # 树形结构视图实现
├── controllers/         # 控制器
│   ├── app_controller.py    # 应用主控制器
│   ├── linear_controller.py # 线性结构控制器
│   └── tree_controller.py   # 树形结构控制器
├── utils/               # 工具类
│   ├── dsl_parser.py    # DSL解析器实现
│   └── visualization_helper.py  # 可视化辅助工具
├── docs/                # 文档
│   └── 使用说明.md       # 中文使用说明
├── examples/            # 示例代码
│   └── test_cases.py    # 测试用例
├── main.py              # 程序入口
└── requirements.txt     # 项目依赖项

技术栈

  • Python 3.8+:核心编程语言,遵循PEP 8编码规范
  • PyQt5:GUI框架,提供丰富的用户界面组件
  • MVC架构:采用模型-视图-控制器设计模式,代码结构清晰
  • 自定义DSL:支持批量操作的领域特定语言
  • 完整文档:所有模块、类和方法都有详细的中文文档字符串

安装与运行

环境要求

  • Python 3.8 或更高版本
  • 安装了pip的Python环境

安装依赖

pip install -r requirements.txt

运行程序

python main.py

使用指南

详细的使用说明请参考 用户指南DSL 命令参考中文使用说明

主要特性

  1. 直观的可视化效果:通过动画展示数据结构的变化过程
  2. 交互式操作界面:支持鼠标点击和键盘输入进行操作
  3. 算法执行过程可视化:展示算法的每一步执行过程
  4. 支持多种数据结构:覆盖常见的线性和树形数据结构
  5. 教学辅助功能:适合教师用于课堂教学演示
  6. 高质量代码:完整的中文注释和文档字符串,易于理解和维护
  7. 模块化设计:清晰的MVC架构,便于扩展和修改

运行

python main.py

使用方法

  1. 通过图形界面手动构建和操作数据结构
  2. 使用内置的DSL命令构建数据结构
  3. 观察数据结构的动态变化过程

开发说明

本项目采用MVC架构模式,确保核心业务逻辑与UI的分离:

  • Model: 实现各种数据结构的核心逻辑
  • View: 负责数据结构的可视化展示
  • Controller: 处理用户输入并协调Model和View

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages