English | 简体中文
Authored by JM233333
Version 0.1
Data Structure Visualizer 是一个 PC 端桌面应用程序,它向用户提供算法数据结构的可视化展示及交互操作,并支持程序员(即便只是新手)对其进行简单的扩展。
该应用提供了 可单步执行的动画演示 和与之配套的 代码跟踪 ,方便用户直观地理解对数据结构执行的各种操作。
该应用可作为个人学习的辅助工具使用,也可作为教学工具使用(例如在课堂上进行投屏演示)。
为便于描述,在下文中我们会将被展示的数据结构(或算法)缩写为 VDS。
使用该可视化工具,你可以:
-
直观地看到 VDS 的逻辑结构的图形化表示,以及在 VDS 上执行的各种操作(即数据结构的维护或算法的执行)的动画演示;
-
看到与动画演示同步的代码跟踪,以及经典的控制台输出结果;
-
使用单步播放模式,深入细致地理解 VDS 执行操作时的运作过程。
-
加入用户自定义的其它 VDS ,并让工具对它们进行展示。
该工具为用户扩展提供了良好的支持,他们不需要阅读并理解整个应用程序的源代码,只需要查阅我们提供的开发者手册即可。唯一的条件是程序员至少应该对 Java 语法有基本的了解,并且在扩展时需要遵循一些预设规则。
不过这个扩展是受到一定限制的,目前该工具仅支持基于以下逻辑结构中的一个或多个的 VDS :
-
线性表(包括顺序表和链表);
-
二叉树。
显然仅支持上面这些是不够的,所以我计划在未来版本增加对以下逻辑结构的支持:
-
二维嵌套的线性表(包括顺序表和链表,允许交叉嵌套);
-
k 叉树;
-
图(仅限简单结构)。
支持 Windows 和 Linux(在 Windows 10 和 Ubuntu 18/20/22 上确保可用)。
需要 JDK 8+ 和 JavaFX 模块。
-
如果使用 JDK 10+ ,那么你可能需要手动将 JavaFX 模块加入你的 JDK 中。
-
建议 Linux 用户不要通过包管理器安装 Java(例如
sudo apt install openjdk-8-jdk
),很可能不内置 JavaFX 模块。从 Oracle 官网上下载的 JDK 8 内置了 JavaFX 模块,无需另外配置。
项目提供 Ant 构建脚本,建议使用 Apache Ant 1.10.x 。
你可以使用 Ant 或任何集成开发环境(例如 Ecllipse 和 IDEA 等)来构建项目。
最简单的方法是直接用项目提供 Ant 构建脚本来编译,但是你必须安装 Apache Ant 1.10.x ,并将环境变量 JAVA_HOME
设置为 JDK 的根目录。配置完成后,进入源代码文件夹的根目录,打开命令行,然后运行如下命令:
ant all
如果构建成功,你会在命令行中看到 BUILD SUCCESSFUL
的提示,并且可以在 out/artifacts/
目录下找到如下内容:
custom/
lib/
data-structure-visualizer.jar
直接运行 .jar
文件即可启动应用程序。
java -jar /path/to/data-structure-visualizer.jar
另外,因为项目源码中保留了 IDEA 使用的 .iml
配置文件,所以使用 IDEA 来构建项目也是非常方便的,一键编译运行即可。
注意:
-
必须使用 JDK 8 或更高的版本。
-
如果使用 Ant 来构建项目,则必须使用 Ant 1.10.x 。
启动可视化演示后(启动方式请参照教程文档),你就会看到如下 GUI :
界面上方的 菜单 用于切换应用程序所演示的数据结构,或是返回主菜单。
- 注:目前版本仅支持返回主菜单,计划在未来版本中实现其它功能。
界面下方的 控制器 (Controller) 是用户与应用程序进行交互的主要界面,包括四个子模块:
-
方法触发器 (Method Triggers) 用于控制被展示的数据结构。你可以通过方法触发器让数据结构执行某种指定的操作,例如让栈执行
push 2
等。 -
动画控制器 (Animation Controller) 包括所有用于设定动画的相关参数的控件,例如播放和暂停动画、调节动画播放速率和设置是否单步播放等。
-
输出盒子 (Output Box) 用于接收来自被展示的数据结构在执行操作期间产生的输出流,并根据用户设置的输出精细度决定输出哪些内容。
-
批处理器 (Batch Processor) 支持执行复杂的操作流。你可以在文本框中输入操作序列,或是从指定的文件中读取预设的操作序列,并对操作序列进行批处理。
界面中央的 显示器 (Monitor) 负责对数据结构进行可视化展示,用于展示数据结构的所有视觉元素及其动画效果都由显示器负责展示,实际上显示器就像是一个画板。
界面右侧的 代码跟踪器 (Code Tracker) 负责展示被展示的数据结构的实际实现代码,并在执行操作时负责进行代码追踪。
关于更详细的使用方法,请参考编译好的成品包或源代码目录下的教程文档。
;
截止 2020.9.21 ,我还没有在最新的发行版本 (v0.1) 中发现任何 BUG 。
;
日期 | 更新内容 |
---|---|
2019.12.1 | 开始开发此项目。 |
为了简洁,早期的更新记录已被省略。 | |
2020.3.5 | 实现了绝大部分的基本功能。 |
2020.3.17 | 支持使用 Ant 编译项目。 |
2020.3.23 | 完成 README 的编写。 |