一种数据结构动态可视化方法和系统转让专利

申请号 : CN202210971527.3

文献号 : CN115048096B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 苏庆陈建成黎智洲

申请人 : 广东工业大学

摘要 :

本发明公开了一种数据结构动态可视化方法和系统,通过当接收到数据结构集时,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。以预设的可视化配置表,识别和提取线性结构中的节点和指针,并进行相应的布局,确定节点和指针的位置,从而得到数据结构对应的多个目标模型对象。按照可视化配置表分别对各个目标模型对象进行图形映射,得到数据结构集对应的目标图形对象,比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。只需要输入数据结构对应的数据,定义数据结构的样式和布局配置,就能实现数据结构动态可视化,不需要对每个数据结构编写可视化程序,降低数据结构的动态可视化开发成本。

权利要求 :

1.一种数据结构动态可视化方法,其特征在于,包括:当接收到数据结构集时,对所述数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构;

根据所述线性结构和预设的可视化配置表,构建所述数据结构对应的多个目标模型对象;

按照所述可视化配置表分别对各个所述目标模型对象进行图形映射,得到所述数据结构集对应的多个目标图形对象;

比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画;

所述预设的可视化配置表包括节点配置项、指针配置项和布局定义函数;所述根据所述线性结构和预设的可视化配置表,构建所述数据结构对应的多个目标模型对象的步骤,包括:根据所述线性结构、所述节点配置项和所述指针配置项,确定所述数据结构对应的多个初始模型对象;

根据所述初始模型对象、所述指针配置项和所述布局定义函数,确定对应的中间模型对象;

按照所述中间模型对象所属的数据结构类型对所述中间模型对象进行聚类,得到多个模型对象聚类簇;

按照预设的可视化容器尺寸调整各所述模型对象聚类簇所处的位置,得到所述数据结构对应的多个目标模型对象。

2.根据权利要求1所述的数据结构动态可视化方法,其特征在于,所述根据所述线性结构、所述节点配置项和所述指针配置项,确定所述数据结构对应的多个初始模型对象的步骤,包括:分别采用所述线性结构内的每个节点字典作为关键字,从对应的可视化配置表中分别匹配对应的节点配置项和指针配置项;

采用所述节点配置项,构建所述节点字典对应的节点对象;

采用所述指针配置项,构建所述节点字典对应的指针对象;

采用所述线性结构对应的全部所述节点对象和所述指针对象作为对应的所述数据结构的多个初始模型对象。

3.根据权利要求2所述的数据结构动态可视化方法,其特征在于,所述指针配置项包括锚点配置;所述根据所述初始模型对象、所述指针配置项和所述布局定义函数,确定对应的中间模型对象的步骤,包括:将所述初始模型对象中的全部所述节点对象作为参数,分别代入对应的布局定义函数,得到所述节点对象对应的节点位置;

获取所述初始模型对象中各所述指针对象对应的起始节点位置和目标节点位置,并结合对应的锚点配置,确定所述指针对象对应的指针位置;

按照所述节点位置和所述指针位置更新对应的初始模型对象的位置,得到对应的中间模型对象。

4.根据权利要求1所述的数据结构动态可视化方法,其特征在于,所述预设的可视化容器尺寸包括可视化容器宽度和可视化容器高度;所述按照预设的可视化容器尺寸调整各所述模型对象聚类簇所处的位置,得到所述数据结构对应的多个目标模型对象的步骤,包括:采用全部所述模型对象聚类簇的并集,构建所述数据结构集对应的整体包围矩形;

计算所述整体包围矩形的中心横坐标值与所述整体包围矩形的宽度中值的第一和值;

计算所述可视化容器宽度与所述第一和值之间的差值,得到目标水平位移距离;

计算所述整体包围矩形的中心纵坐标值与所述整体包围矩形的高度中值的第二和值;

计算所述可视化容器高度和所述第二和值之间的差值,得到目标垂直位移距离;

按照所述目标水平位移距离和所述目标垂直位移距离移动各所述模型对象聚类簇,得到所述数据结构对应的多个目标模型对象。

5.根据权利要求1所述的数据结构动态可视化方法,其特征在于,所述按照所述可视化配置表分别对各个所述目标模型对象进行图形映射,得到所述数据结构集对应的多个目标图形对象的步骤,包括:按照所述目标模型对象所属的类型,确定所述目标模型对象对应的节点配置项或指针配置项;

按照所述节点配置项或所述指针配置项,确定所述目标模型对象对应的图形对象;

采用全部所述图形对象作为所述数据结构集对应的多个目标图形对象。

6.根据权利要求1所述的数据结构动态可视化方法,其特征在于,所述比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画的步骤,包括:根据所述目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合;

比对所述第一图形集合内的第一图形对象与各所述目标图形对象,确定图形移除信息子集;

将第一图形集合移除所述图形移除信息子集对应的第一图像对象后的图形集合作为第二图形集合;

选取所述第二图形集合内与所述目标图形对象所属的标识值相同的第二图形对象;

比对所述第二图形对象与对应的目标图形对象的图形样式和位置,确定样式更新信息子集和位置更新信息子集;

按照所述新增图形信息子集、所述图形移除信息子集、所述样式更新信息子集和所述位置更新信息子集,确定所述数据结构集对应的更新图形;

分别渲染所述更新图形,得到所述数据结构集对应的图形动画。

7.根据权利要求6所述的数据结构动态可视化方法,其特征在于,所述根据所述目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合的步骤,包括:以全部历史图形对象所属的类型作为图形关键字,以全部所述历史图形对象作为值,构建哈希表;

以所述目标图形对象所属的类型作为所述图形关键字,筛选全部未在所述哈希表内的所述目标图形对象,并构建新增图形信息子集;

采用所述新增图形信息子集内全部对应的目标图形对象和全部历史图形对象,构建第一图形集合。

8.根据权利要求1所述的数据结构动态可视化方法,其特征在于,还包括:按照数据结构内各节点所属的节点类型,构建所述节点对应的节点配置项;

按照所述数据结构内各所述节点对应的自定义指针域,构建所述节点对应的指针配置项;

按照所述数据结构的预设布局条件,构建所述数据结构对应的布局定义函数;

采用全部所述节点配置项、所述指针配置项和所述布局定义函数,构建所述数据结构对应的可视化配置表。

9.一种数据结构动态可视化系统,其特征在于,包括:线性结构得到模块,用于当接收到数据结构集时,对所述数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构;

目标模型对象构建模块,用于根据全部所述线性结构和预设的可视化配置表,构建各所述数据结构对应的多个目标模型对象;

目标图形对象得到模块,用于按照所述可视化配置表分别对所述目标模型对象进行图形映射,得到所述数据结构集对应的目标图形对象;

图形动画得到模块,用于比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画;

所述预设的可视化配置表包括节点配置项、指针配置项和布局定义函数;所述目标模型对象构建模块包括:初始模型对象确定模块,用于根据所述线性结构、所述节点配置项和所述指针配置项,确定所述数据结构对应的多个初始模型对象;

中间模型对象确定模块,用于根据所述初始模型对象、所述指针配置项和所述布局定义函数,确定对应的中间模型对象;

模型对象聚类簇得到模块,用于按照所述中间模型对象所属的数据结构类型对所述中间模型对象进行聚类,得到多个模型对象聚类簇;

目标模型确定子模块,用于按照预设的可视化容器尺寸调整各所述模型对象聚类簇所处的位置,得到所述数据结构对应的多个目标模型对象。

说明书 :

一种数据结构动态可视化方法和系统

技术领域

[0001] 本发明涉及数据结构可视化技术领域,尤其涉及一种数据结构动态可视化方法和系统。

背景技术

[0002] 程序设计可视化是编程学习中的一种常用且有效的降低程序调试难度的方案,而通过数据结构可视化技术进行数据结构可视化,展现一个数据结构内部各个节点之间、以及各个数据结构之间的逻辑关系,是程序设计可视化的一个重要发展方向。
[0003] 数据结构可视化技术通常可分为静态可视化和动态可视化两种,静态可视化偏重展示,关注某个时刻的数据结构的状态进行完整的绘制和呈现,采用静态可视化方法时,不能表现“数据结构变化前的可视化视图”和“变化后的可视化视图”之间的过渡衔接过程。而动态可视化可以以一种平滑自然的方式对可视化视图进行相应的更新,完整呈现数据结构变化前后造成的差异,使得两个数据结构的可视化视图间可以平滑地衔接,改善用户对可视化图形之间变化的图形感知,因此,用户在编程学习过程,通过使用动态可视化方法可以清楚地体会到数据结构是如何变化与运作的,更能深刻地掌握和理解数据结构。
[0004] 但数据结构有许多种类型,每种数据结构在可视化的呈现又各不一致,而现有的数据结构动态可视化方法需要为每种数据结构单独编写其专门的可视化程序,才能实现数据结构动态可视化,导致开发的成本高。

发明内容

[0005] 本发明提供了一种数据结构动态可视化方法和系统,解决了现有的数据结构动态可视化方法需要为每种数据结构单独编写其专门的可视化程序,才能实现数据结构动态可视化,导致开发的成本高的技术问题。
[0006] 本发明提供的一种数据结构动态可视化方法,包括:
[0007] 当接收到数据结构集时,对所述数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构;
[0008] 根据所述线性结构和预设的可视化配置表,构建所述数据结构对应的多个目标模型对象;
[0009] 按照所述可视化配置表分别对各个所述目标模型对象进行图形映射,得到所述数据结构集对应的多个目标图形对象;
[0010] 比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画。
[0011] 可选地,所述预设的可视化配置表包括节点配置项、指针配置项和布局定义函数;所述根据所述线性结构和预设的可视化配置表,构建所述数据结构对应的多个目标模型对象的步骤,包括:
[0012] 根据所述线性结构、所述节点配置项和所述指针配置项,确定所述数据结构对应的多个初始模型对象;
[0013] 根据所述初始模型对象、所述指针配置信息和所述布局定义函数,确定对应的中间模型对象;
[0014] 按照所述中间模型对象所属的数据结构类型对所述中间模型对象进行聚类,得到多个模型对象聚类簇;
[0015] 按照预设的可视化容器尺寸调整各所述模型对象聚类簇所处的位置,得到所述数据结构对应的多个目标模型对象。
[0016] 可选地,所述根据所述线性结构、所述节点配置项和所述指针配置项,确定所述数据结构对应的多个初始模型对象的步骤,包括:
[0017] 分别采用所述线性结构内的每个节点字典作为关键字,从对应的可视化配置表中分别匹配对应的节点配置项和指针配置项;
[0018] 采用所述节点配置项,构建所述节点字典对应的节点对象;
[0019] 采用所述指针配置项,构建所述节点字典对应的指针对象;
[0020] 采用所述线性结构对应的全部所述节点对象和所述指针对象作为对应的所述数据结构的多个初始模型对象。
[0021] 可选地,所述指针配置信息包括锚点配置;所述根据所述初始模型对象、所述指针配置信息和所述布局定义函数,确定对应的中间模型对象的步骤,包括:
[0022] 将所述初始模型对象中的全部所述节点对象作为参数,分别代入对应的布局定义函数,得到所述节点对象对应的节点位置;
[0023] 获取所述初始模型对象中各所述指针对象对应的起始节点位置和目标节点位置,并结合对应的锚点配置,确定所述指针对象对应的指针位置;
[0024] 按照所述节点位置和所述指针位置更新对应的初始模型对象的位置,得到对应的中间模型对象。
[0025] 可选地,所述预设的可视化容器尺寸包括可视化容器宽度和可视化容器高度;所述按照预设的可视化容器尺寸调整各所述模型对象聚类簇所处的位置,得到所述数据结构对应的多个目标模型对象的步骤,包括:
[0026] 采用全部所述模型对象聚类簇的并集,构建所述数据结构集对应的整体包围矩形;
[0027] 计算所述整体包围矩形的中心横坐标值与所述整体包围矩形的宽度中值的第一和值;
[0028] 计算所述可视化容器宽度与所述第一和值之间的差值,得到目标水平位移距离;
[0029] 计算所述整体包围矩形的中心纵坐标值与所述整体包围矩形的高度中值的第二和值;
[0030] 计算所述可视化容器高度和所述第二和值之间的差值,得到目标垂直位移距离;
[0031] 按照所述目标水平位移距离和所述目标垂直位移距离移动各所述模型对象聚类簇,得到所述数据结构对应的多个目标模型对象。
[0032] 可选地,所述按照所述可视化配置表分别对各个所述目标模型对象进行图形映射,得到所述数据结构集对应的多个目标图形对象的步骤,包括:
[0033] 按照所述目标模型对象所属的类型,确定所述目标模型对象对应的节点配置项或指针配置项;
[0034] 按照所述节点配置项或所述指针配置项,确定所述目标模型对象对应的图形对象;
[0035] 采用全部所述图形对象作为所述数据结构集对应的多个目标图形对象。
[0036] 可选地,所述比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画的步骤,包括:
[0037] 根据所述目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合;
[0038] 比对所述第一图形集合内的第一图形对象与各所述目标图形对象,确定图形移除信息子集;
[0039] 将第一图形集合移除所述图形移除信息子集对应的第一图像对象后的图形集合作为第二图形集合;
[0040] 选取所述第二图形集合内与所述目标图形对象所属的标识值相同的第二图形对象;
[0041] 比对所述第二图形对象与对应的目标图形对象的图形样式和位置,确定样式更新信息子集和位置更新信息子集;
[0042] 按照所述新增图形信息子集、所述图形移除信息子集、所述样式更新信息子集和所述位置更新信息子集,确定所述数据结构集对应的更新图形;
[0043] 分别渲染所述更新图形,得到所述数据结构集对应的图形动画。
[0044] 可选地,所述根据所述目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合的步骤,包括:
[0045] 以全部历史图形对象所属的类型作为图形关键字,以全部所述历史图形对象作为值,构建哈希表;
[0046] 以所述目标图形对象所属的类型作为所述图像关键字,筛选全部未在所述哈希表内的所述目标图形对象,并构建新增图形信息子集;
[0047] 采用所述新增图形信息子集内全部对应的目标图形对象和全部历史图形对象,构建第一图形集合。
[0048] 可选地,还包括:
[0049] 按照数据结构内各节点所属的节点类型,构建所述节点对应的节点配置项;
[0050] 按照所述数据结构内各所述节点对应的自定义指针域,构建所述节点对应的指针配置项;
[0051] 按照所述数据结构的预设布局条件,构建所述数据结构对应的布局定义函数;
[0052] 采用全部所述节点配置项、所述指针配置项和所述布局定义函数,构建所述数据结构对应的可视化配置表。
[0053] 本发明还提供了一种数据结构动态可视化系统,包括:
[0054] 线性结构得到模块,用于当接收到数据结构集时,对所述数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构;
[0055] 目标模型对象构建模块,用于根据全部所述线性结构和预设的可视化配置表,构建各所述数据结构对应的多个目标模型对象;
[0056] 目标图形对象得到模块,用于按照所述可视化配置表分别对所述目标模型对象进行图形映射,得到所述数据结构集对应的目标图形对象;
[0057] 图形动画得到模块,用于比对所述目标图形对象与历史图形对象,确定更新图形并渲染,得到所述数据结构集对应的图形动画。
[0058] 从以上技术方案可以看出,本发明具有以下优点:
[0059] 本发明通过针对数据结构的多样性问题,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。以预设的可视化配置表,识别和提取线性结构中的节点对象和指针对象,并进行相应的布局,确定节点和指针的位置,从而得到数据结构对应的多个目标模型对象。按照可视化配置表分别对各个目标模型对象进行图形映射,得到数据结构集对应的目标图形对象,比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。解决了现有的数据结构动态可视化方法需要为每种数据结构单独编写其专门的可视化程序,才能实现数据结构动态可视化,导致开发的成本高的技术问题。通过采用线性结构来统一表示数据结构,设置可视化配置表,只需要定义数据结构的部分数据就能实现数据结构动态可视化,不需要对每个数据结构编写其专门的可视化程序,可以以更低的成本进行任意数据结构的动态可视化开发。

附图说明

[0060] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0061] 图1为本发明实施例一提供的一种数据结构动态可视化方法的步骤流程图;
[0062] 图2为本发明实施例一中的二叉树节点示例和哈希表链地址法头节点示例;
[0063] 图3为本发明实施例二提供的一种数据结构动态可视化方法的步骤流程图;
[0064] 图4为本发明实施例二中节点配置项和指针配置项示例;
[0065] 图5为本发明实施例二中两个二叉树进行数据结构间布局的示意图;
[0066] 图6为本发明实施例二中模型队列对应的整体包围矩形居中布局的示意图;
[0067] 图7为本发明实施例二中目标模型对象 与图形对象 间的图形映射示意图;
[0068] 图8为本发明实施例二中构建哈希表的示意图;
[0069] 图9为本发明实施例二中构建第一图形集合的步骤执行示意图;
[0070] 图10为本发明实施例二中构建第二图形集合的步骤执行示意图;
[0071] 图11为本发明实施例二提供的一种数据结构动态可视化方法执行过程的流程框图;
[0072] 图12为本发明实施例三提供的一种数据结构动态可视化系统的结构框图。

具体实施方式

[0073] 动态可视化方法可以展现可视化视图中每一个节点或者指针的具体变化过程,包括创建、销毁、位置变化或者样式更改。通过观察这些变化过程,配合适当的交互机制,用户可以清楚地体会到数据结构是如何变化与运作的,更能深刻地掌握和理解数据结构。
[0074] 然而,对数据结构进行可视化需要将数据结构输入到可视化程序中,由于需要进行可视化的数据结构有多种,且每种数据结构的结构抽象表示各不一致,甚至存在同一种数据结构有多种表示方式的情况。可视化程序很难对不同抽象表示的数据结构进行统一处理,若为每种数据结构单独编写其专门的可视化程序,则开发和维护成本都比较高。而在数据结构动态可视化中,有许多环节是通用的,比如图形渲染,动画计算,视图交互等。
[0075] 因此,本发明实施例提供了一种数据结构动态可视化方法和系统,用于解决现有的数据结构动态可视化方法需要为每种数据结构单独编写其专门的可视化程序,才能实现数据结构动态可视化,导致开发的成本高的技术问题。
[0076] 为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0077] 请参阅图1,图1为本发明实施例一提供的一种数据结构动态可视化方法的步骤流程图。
[0078] 本发明提供的一种数据结构动态可视化方法,包括:
[0079] 步骤101、当接收到数据结构集时,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。
[0080] 数据结构集是指包含程序设计中使用的多个数据结构的集合。线性转换是指用字典结构分别表示数据结构内每个数据结构节点信息,并将得到的所有字典结构组成一个线性结构的过程,其中字典结构又称为节点字典。线性结构又称节点字典集,是将数据结构内的全部数据结构节点进行线性转换后得到的所有节点字典组成的结构。其中,一个节点字典所含有的 以及对应的释义,如表1所示:
[0081] 表1 节点字典所含有的 以及对应的释义
[0082]
[0083] 其中: 是指每个数据结构节点的唯一标识值,取值规则可以由用户自行设定,例如可以为内存地址或对象的哈希值等。 是指用于区分不同类型的节点。比如经典的数据结构:哈希表的链地址法,其包含表头节点和单链表节点两种,则可以通过取不同的来区分这两种节点。 是指用于区分数据结构组。当需要在视图中同时可视化多个数据结构时,将每个数据结构视为一个数据结构组,然后取不同的 来区分这些数据结构组。 是指用于指定可视化配置表的名称。自定义的指针域是指除上述 之外,其余自定义 均被视作定义与该节点相关的指针的名称。不同的 代表不同的指针,而对应的值表示指针指向的目标节点的 。同时,由于节点类型通过区分,因此,在指明目标节点 的同时,亦需指明节点类型 ,且 和
通过 号隔开。
[0084] 如图2提供的二叉树节点示例和哈希表链地址法头节点示例,其中图2(a)展示了一个带有左右孩子指针的二叉树节点的对应节点字典,其中 和为对应的左右孩子节点, 号前为目标节点的 ,后为目标节点的
。此处,因为目标节点均为二叉树节点,因此 都为 。图2
(b)为哈希表链地址法头节点的节点字典,其中的 表示指向其后续单链表的指针,因此对应的目标节点的 为 。图2中的 , ,
, 的取值可以根据需要进行设置,本发明实施例对此不作限制。
[0085] 在本发明实施例中,当接收到数据结构集时,分别对数据结构集内的各个数据结构进行线性转换,将每个数据结构内的数据结构节点分别转换为对应的节点字典,并采用每个数据结构对应的全部节点字典,分别构建数据结构对应的线性结构。
[0086] 步骤102、根据线性结构和预设的可视化配置表,构建数据结构对应的多个目标模型对象。
[0087] 数据结构虽有多种,但通过分析数据结构的可视化视图的组成元素,可以知道需要呈现一个完整的数据结构可视化至少需要三个要素:数据结构中的内部值及所表达的逻辑关系(简称为数据结构的数据);数据结构的样式配置;数据结构的布局。其中,数据结构的数据决定了可视化视图的逻辑结构,数据结构的样式配置决定了数据结构的节点和指针在可视化视图中呈现的外观,而数据结构的布局决定了数据结构的节点和指针在可视化视图中的摆放位置。因此,一个数据结构可视化过程可以抽象为函数f:
[0088]
[0089] 其中, 表示数据结构的数据, 表示数据结构样式配置, 表示数据结构布局, 为数据结构可视化视图。
[0090] 预设的可视化配置表用于描述数据结构在可视化视图中的外观样式和布局,预设的可视化配置包括节点配置项、指针配置项和布局定义函数。节点配置项根据节点的指定相应的配置内容,指针配置项根据节点的自定义指针域的 指定相应的配置内容,而布局定义函数以函数的方式,让用户操作节点的坐标位置,从而定义数据结构的布局。其中,可视化配置表的具体实现可以根据实际需要设定,例如可以以常量形式写到代码中,或者以 , , 等配置文件给出,本发明实施例对此不作限制。
[0091] 目标模型对象是指由数据结构的各节点和指针构建得到模型对象经过聚类、调整位置后得到的最终模型对象。
[0092] 在本发明实施例中,对执行数据结构布局,可得到其对应的布局位置信息,即确定数据结构的节点和指针在可视化容器中的具体坐标位置。以线性结构、节点配置项和指针配置项,确定数据结构对应的多个初始模型对象。通过对应的可视化配置表中用户自定义的布局定义函数和初始模型对象,确定单个数据结构的内部布局,得到对应的中间模型对象。按照中间模型对象所属的数据结构类型对中间模型对象进行聚类,得到多个模型对象聚类簇,按照预设的可视化容器尺寸调整各模型对象聚类簇所处的位置,使得可视化视图位于可视化容器中央,从而得到数据结构集对应的多个目标模型对象。
[0093] 步骤103、按照可视化配置表分别对各个目标模型对象进行图形映射,得到数据结构集对应的多个目标图形对象。
[0094] 目标图形对象是指每个目标模型对象分别与对应的图形绑定后得到的图形对象。
[0095] 在本发明实施例中,按照目标模型对象所属的类型,确定目标模型对象对应的节点配置项或指针配置项,并按照节点配置项或指针配置项,确定目标模型对象所关联的图形类型,采用图形引擎创建对应的图形对象,并与对应的目标模型对象绑定,得到目标模型对象对应的图形对象。采用全部图形对象作为数据结构集对应的多个目标图形对象。
[0096] 步骤104、比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。
[0097] 历史图形对象是指目标图形对象变化前对应的图形对象。
[0098] 在本发明实施例中,将全部目标图形对象分别与历史图形对象比对,构建新增图形信息子集和第一图形集合,比对第一图形集合内的第一图形对象与各目标图形对象,确定图形移除信息子集。将第一图形集合移除图形移除信息子集对应的第一图像对象后的图形集合作为第二图形集合,选取第二图形集合内与目标图形对象所属的标识值相同的第二图形对象。比对第二图形对象与对应的目标图形对象的图形样式和位置,确定样式更新信息子集和位置更新信息子集。按照新增图形信息子集、图形移除信息子集、样式更新信息子集和位置更新信息子集,确定数据结构集对应的所有更新图形,分别渲染更新图形,得到数据结构集对应的图形动画。
[0099] 在本发明实施例中,当接收到数据结构集时,针对数据结构的多样性问题,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。以预设的可视化配置表,识别和提取线性结构中的节点和指针,并进行相应的布局,确定节点和指针的位置,从而得到数据结构对应的多个目标模型对象。按照可视化配置表分别对各个目标模型对象进行图形映射,得到数据结构集对应的目标图形对象,比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。解决了现有的数据结构动态可视化方法需要为每种数据结构单独编写其专门的可视化程序,才能实现数据结构动态可视化,导致开发的成本高的技术问题。通过采用线性结构来统一表示数据结构,设置可视化配置表,只需要定义数据结构的部分数据就能实现数据结构动态可视化,不需要对每个数据结构编写其专门的可视化程序,可以以更低的成本进行任意数据结构的动态可视化开发。
[0100] 请参阅图3,图3为本发明实施例二提供的一种数据结构动态可视化方法的步骤流程图;
[0101] 步骤301、按照数据结构内各节点所属的节点类型,构建节点对应的节点配置项。
[0102] 在本发明实施例中,按照数据结构内各节点所属的节点类型,构建线性结构 中各节点字典的 值定义对应的配置内容,该配置内容包括数据结构内各节点即数据结构节点在可视化视图中对应的几何图形(如矩形,圆形等),节点图形的宽高、节点颜色、描边、文本大小等,得到数据结构节点对应的节点配置项。如图2(a)中的二叉树节点字典为例,图4(a)是其对应的节点配置项,binary_node表明其配置对应二叉树节点,其中shape:rect表示节点要映射的图形是矩形,width:80表示节点宽为80,height:40表示节点高为
40,color:#C2185B表示节点颜色为#C2185B,stroke:#000表示描边为#000。
[0103] 步骤302、按照数据结构内各节点对应的自定义指针域,构建节点对应的指针配置项。
[0104] 在本发明实施例中,按照数据结构内各节点对应的自定义指针域,构建线性结构中节点字典的 值定义对应的配置内容,该配置内容包括指针起始端点图形,指针结尾端点图形,指针线宽,指针颜色,起始锚点,结尾锚点等。如图2(a)中的二叉树节点字典所示,图4(b)是其对应的部分指针配置项, 表明其配置对应二叉树节点中的左孩子指针,其中end_shape:arrow表示指针结尾端点映射的图形是箭头,line_width:4表示指针直线宽度为4,color:#C2185B表示指针颜色为#C2185B,start_anchor:(0,0)表示指针的起始锚点为(0,0),end_anchor:(10,10)表示指针的结尾锚点为(10,10)。
[0105] 每个数据结构的节点配置项或指针配置项中具体有多少配置条目,有哪些配置条目都并不是绝对的,可以根据实际需要和开发难度自行规定。允许用户缺省某些配置,并由可视化程序自行设定默认值,本发明实施例对此不作限制。
[0106] 步骤303、按照数据结构的预设布局条件,构建数据结构对应的布局定义函数。
[0107] 在本发明实施例中,按照数据结构的预设布局条件即用户自定义数据结构节点的布局,构建数据结构对应的布局定义函数。布局定义函数以模型队 中所有 对象提取组成一个节点集合,称其为 ,并将 中的 对象按预设的顺序排列,其中预设的顺序是按照实际需要自行设定,本发明实施例对此不作限制。设为 作为输入,然后按照得到的结果,操作并修改对应节点的坐标以达到布局的效果。布局定义函数以 作为输入参数,然后在函数中通过下标访问中 的节点(即某个Node对象),通过修改和访问节点的 , 坐标来控制数据结构节点的位置,进行数据结构的布局,例如:
[0108] function Layout(N1)
[0109]
[0110]
[0111] end function
[0112] 其中, 表示以 为下标访问 中第 个节点,在上例中 取了0或1。上述伪代码的功能是将 的第1个节点的 坐标值设置为 的第0个节点的 坐标加25, 坐标值设置为 的第0个节点的 坐标加25。
[0113] 步骤304、采用全部节点配置项、指针配置项和布局定义函数,构建数据结构对应的可视化配置表。
[0114] 在本发明实施例中,将每个数据结构对应的全部节点配置项、指针配置项和布局定义函数,构建数据结构对应的可视化配置表。
[0115] 步骤305、当接收到数据结构集时,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。
[0116] 在本发明实施例中,当接收到数据结构集时,分别对数据结构集内的各个数据结构进行线性转换,按照每个数据结构内数据结构节点信息分别转换为对应的节点字典,其中节点字典包含对应数据结构节点的唯一标识值、类型、所属的数据结构的名称、对应的可视化配置表以及自定义的指针域。采用每个数据结构对应的全部节点字典分别构建数据结构对应的线性结构。
[0117] 步骤306、根据线性结构、节点配置项和指针配置项,确定数据结构对应的多个初始模型对象。
[0118] 节点字典集即线性结构仅仅是数据结构节点的最简表示,因此需要对其进行一次扩充抽象,目的是在与视图层之间建立一个中间层表示,以便后续更好地进行位置布局和图形映射等操作。
[0119] 结构模型抽象阶段将线性结构中的两种关键信息:节点和指针,分别抽象为节点对象和指针对象,用作将数据结构与可视化视图之间建立一个中间转换层。结构模型抽象阶段的具体工作是,对各个线性结构进行节点与指针的识别和提取,以节点或者指针作为构造函数的参数,使用new关键字创建一个 或 对象,然后加入到模型队列,记该模型队列为 。同样地,设模型队列对应的历史模型队列为 。
[0120] 节点对象和指针对象统称为模型对象,节点对象又称 对象,指针对象又称对象, 对象和 对象中包含的关键属性及其释义分别如下述表2和表3所示,其中指针的 的定义规则为 。如存在
从 为0001的节点指向 为0002的节点的指针,则该指针的 为0001-0002。
[0121] 表2  对象中包含的关键属性及其释义
[0122]
[0123] 表3  对象中包含的关键属性及其释义
[0124]
[0125] 进一步地,预设的可视化配置表包括节点配置项、指针配置项和布局定义函数,步骤306可以包括以下子步骤S11‑S14:
[0126] S11、分别采用线性结构内的每个节点字典作为关键字,从对应的可视化配置表中分别匹配对应的节点配置项和指针配置项。
[0127] 在本发明实施例中,以线性结构内的每个节点字典作为关键字,分别从线性结构对应的可视化配置表中,匹配到对应的节点配置项和指针配置项,得到每个节点字典对应的节点配置项和指针配置项。
[0128] S12、采用节点配置项,构建节点字典对应的节点对象。
[0129] 在本发明实施例中,遍历数据结构集对应的线性结构 ,提取 中的每个节点字典 ,并按照每个节点字典 对应的节点配置项,构造节点字典 对应的 对象,然后将 对象加入模型队列 。
[0130] S13、采用指针配置项,构建节点字典对应的指针对象。
[0131] 在本发明实施例中,按照每个节点字典 对应的指针配置项,检查节点字典是否声明了存在于指针配置项的自定义指针域的 ,若有声明,则开始解析 对应的值。以 号分割得到节点 的和 ,然后在线性结构 中找出对应 的和的目标节点,构造节点字典 对应的 对象,并将 对象加入模型
队列 。
[0132] S14、采用线性结构对应的全部节点对象和指针对象作为对应的数据结构的多个初始模型对象。
[0133] 初始模型对象是指按照线性结构对应的节点配置项和指针配置项,构建得到的模型对象。
[0134] 在本发明实施例中,将每个线性结构对应的全部节点对象和指针对象作为数据结构对应的初始模型对象,将数据结构集内所有数据结构对应的全部初始模型对象加入模型队列 。
[0135] 步骤307、根据初始模型对象、指针配置信息和布局定义函数,确定对应的中间模型对象。
[0136] 进一步地,指针配置信息包括锚点配置,步骤307可以包括以下子步骤S21‑S24:
[0137] S21、将初始模型对象中的全部节点对象作为参数,分别代入对应的布局定义函数,得到节点对象对应的节点位置。
[0138] 在本发明实施例中,对于模型队列 中的每个节点对象 ,以 的属性获取对应的可视化配置表中的布局定义函数。将 中所有 对象提
取组成一个节点集合 ,以 为参数,执行布局定义函数,即可确定 在其对应的数据结构的位置。
[0139] S22、获取初始模型对象中各指针对象对应的起始节点位置和目标节点位置,并结合对应的锚点配置,确定指针对象对应的指针位置。
[0140] 在本发明实施例中,对于 中的每个指针对象 ,以 的起始节点位置和目标节点位置以及 对应的指针配置项中的锚点配置,确定 的位置。设 的起始节点为 ,目标节点为 ,锚点配置为 ,则 的起始
坐标 和结束坐标 分别为:
[0141]
[0142]
[0143] S23、按照节点位置和指针位置更新对应的初始模型对象的位置,得到对应的中间模型对象。
[0144] 在本发明实施例中,当得到各个初始模型对象对应的位置后,按照得到的位置分别更新初始模型对象的位置,将更新位置后初始模型对象作为中间模型对象。
[0145] 步骤308、按照中间模型对象所属的数据结构类型对中间模型对象进行聚类,得到多个模型对象聚类簇。
[0146] 模型对象聚类簇是指包括同一数据结构类型的模型对象的集合。
[0147] 在本发明实施例中,当所有数据结构对应的节点对象和指针对象执行完布局自定义函数和指针位置计算,即完成数据结构内部布局后,记包含所有中间模型对象的模型队列为 ,按照以下步骤对 进行数据结构间布局:
[0148] Step1、对 进行数据结构布局单元的划分:遍历 ,将 中 的属性相同的 归类为一个模型对象聚类簇,模型对象聚类簇又称数据结
构布局单元。
[0149] Step2、从第一个数据结构布局单元开始,在水平方向上,以layout_unit_distance为间距,从左往右进行树布局单元的水平摆放。其中,layout_unit_distance是由算法指定或者用户自定义的一个变量,类型为整型或者浮点型,表示树布局单元之间的水平距离值。
[0150] Step3、以第一个数据结构布局单元为准,取该布局单元所占高度的中位线,从左往右进行将后续数据结构布局单元的高度中位线对齐到第一个布局单元的高度的中位线。
[0151] 如图5所示,图5为两个二叉树进行数据结构间布局的图示,图中F表示二叉树之间的间距,F为layout_unit_distance。图中存在两个二叉树 和 分别被各自划分为数据结构布局单元,然后以数据结构布局单元为单位,以layout_unit_distance为间距从左至右进行布局。
[0152] 步骤309、按照预设的可视化容器尺寸调整各模型对象聚类簇所处的位置,得到数据结构对应的多个目标模型对象。
[0153] 进一步地,预设的可视化容器尺寸包括可视化容器宽度和可视化容器高度,步骤309可以包括以下子步骤S31‑S36:
[0154] S31、采用全部模型对象聚类簇的并集,构建数据结构集对应的整体包围矩形。
[0155] 模型对象聚类簇的并集是指模型队列 中每个数据结构布局单元所占的空间的包围矩形。
[0156] 在本发明实施例中,计算 中所有数据结构布局单元所占空间的包围矩形,采用以下整体包围矩形公式,计算 对应的整体包围矩形:
[0157]
[0158] 其中 表示整体包围矩形,分别表示各个数据结构布局单元对应的
包围矩形。
[0159] S32、计算整体包围矩形的中心横坐标值与整体包围矩形的宽度中值的第一和值。
[0160] 在本发明实施例中,通过整体包围矩形公式计算出的整体包围矩形,确定整体包围矩形的中心横坐标值和整体包围矩形的宽度,然后计算整体包围矩形的中心横坐标值与整体包围矩形的宽度中值的第一和值。
[0161] S33、计算可视化容器宽度与第一和值之间的差值,得到目标水平位移距离。
[0162] 在本发明实施例中,采用可视化容器宽度与第一和值进行差值计算,通过计算可视化容器宽度和第一和值之间的差值,得到目标水平位移距离。
[0163] S34、计算整体包围矩形的中心纵坐标值与整体包围矩形的高度中值的第二和值。
[0164] 在本发明实施例中,通过整体包围矩形公式计算出的整体包围矩形,确定整体包围矩形的中心纵坐标值和整体包围矩形的高度,然后计算整体包围矩形的中心纵坐标值与整体包围矩形的高度中值的第二和值。
[0165] S35、计算可视化容器高度与第二和值之间的差值,得到目标垂直位移距离。
[0166] 在本发明实施例中,将采用可视化容器高度与第二和值进行差值计算,通过计算可视化容器高度与第二和值之间的差值,得到目标垂直位移距离。
[0167] 使 可水平垂直居中对齐可视化容器的目标水平位移距离 和目标垂直位移距离 的计算过程,如下述公式所示:
[0168]
[0169]
[0170] 其中, 表示可视化容器宽度, 表示可视化容器高度 , 表示整体包围矩形的中心横坐标值,
表示包围矩形的中心纵坐标值, 表示整体包围
矩形的宽度, 表示整体包围矩形的高度。
[0171] S36、按照目标水平位移距离和目标垂直位移距离移动各模型对象聚类簇,得到数据结构对应的多个目标模型对象。
[0172] 在本发明实施例中,计算得到目标水平位移距离和目标垂直位移距离后,按照目标水平位移距离和目标垂直位移距离,将 整体位移 即可得到数据结构对应的多个目标模型对象。如图6所示,图6是模型队列对应的整体包围矩形居中布局的图示,将对应的整体包围矩形水平移动 和垂直移动 ,即可以使 的几何中心对准可
视化容器的几何中心,完成居中布局,将居中布局后的各个中间模型对象作为数据结构对应的目标模型对象。
[0173] 步骤310、按照可视化配置表分别对各个目标模型对象进行图形映射,得到数据结构集对应的多个目标图形对象。
[0174] 进一步地,步骤310可以包括以下子步骤S41‑S43:
[0175] S41、按照目标模型对象所属的类型,确定目标模型对象对应的节点配置项或指针配置项。
[0176] 在本发明实施例中,将模型队列 内的模型对象对应更新为目标模型对象后,遍历模型队列 ,对于任一 对象 ,根据 的 值和值找到其对应的节点配置项或指针配置项。
[0177] S42、按照节点配置项或指针配置项,确定目标模型对象对应的图形对象。
[0178] 图形对象是指目标模型对象对应的图形。历史图形对象是指历史模型对象对应的图形。
[0179] 在本发明实施例中,按照每个目标模型对象对应的节点配置项或指针配置项中的字段的值对应的图形类型,使用图形引擎创建该图形类型制定的图形对象,并将图形对象与对应的目标模型对象绑定,同时创建得到的 会被加入到
图形队列中,记该图形队列为 。表4是一个 对象所包含的基本属性及其释义。
[0180] 表4  对象所包含的基本属性及其释义
[0181]
[0182] 其中: 是由 对象的 与 的 所组成,基本格式为。例如,一个 的 为0001,其对应的
的 属性为矩形 ,那么 的 为 。type为
的可视化配置表中的 字段的值。position由 的进行结构模型布局后的位
置信息,即由position属性计算转换得到,依赖于 的position属性。 用作
描述 的外观,通常包含填充颜色,边框颜色,透明度,字体大小等值。
[0183] 每一个 被创建后都会通过赋值到对应的 的 属性与建立绑定关系,同时,该 被添加到图形队列 中。同样地,设 对应的
历史图形队列为 。图7是目标模型对象 与图形对象 间的图形映射图
示, 中的 对象与图形队列 中的Rect之间存在映射关联, 中的
对象与图形队列 中的Line和Arrow之间存在映射关联,可见 中每个
都会与图形队列 中的每个 建立一对一或的一对多的映射关联。
[0184] S43、采用全部图形对象作为数据结构集对应的多个目标图形对象。
[0185] 在本发明实施例中,按照每个目标模型对象对应的节点配置项或指针配置项中的字段的值对应的图形类型,使用图形引擎创建该图形类型对应的图形对象,并将图形对象与对应的目标模型对象绑定,将得到的全部图形对象作为数据结构集对应的多个目标图像对象。
[0186] 步骤311、比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。
[0187] 进一步地,步骤311可以包括以下子步骤S51‑S57:
[0188] S51、根据目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合。
[0189] 进一步地,S51可以包括以下子步骤S511‑S513:
[0190] S511、以全部历史图形对象所属的类型作为图形关键字,以全部历史图形对象作为值,构建哈希表。
[0191] 在本发明实施例中,为加快访问队列中 对象的速度,需要为历史图形队列建立一个哈希表shape_table,其中需要首先以历史图形队列 的每个 的作为哈希表shape_table的关键字 , 本身作为值 。由于图形队列
仅用于对比,故只需对历史图形队列 建立哈希表。如图8所示,展示了如何根据 构造出shape_table的示例。其中,A、B、C、D、E、和F表示哈希表shape_table的关键字 ,shape_table的 指向历史图形队列 的每个 ,表示其保存的是
的引用。ShapeA、ShapeB、ShapeC、ShapeD、ShapeE、ShapeF为 内的 。
[0192] S512、以目标图形对象所属的类型作为图像关键字,筛选全部未在哈希表内的目标图形对象,并构建新增图形信息子集。
[0193] 在本发明实施例中,以目标图形对象所属的类型作为图像关键字,访问哈希表,采用所有与历史图形队列 中的历史图形对象 不同的目标图形对象 构建新增图形信息子集 。
[0194] S513、采用新增图形信息子集内全部对应的目标图形对象和全部历史图形对象,构建第一图形集合。
[0195] 在本发明实施例中,对图形队列 内的每一个图形对象 ,检查在历史图形队列 中是否存在与 具有相同 的历史图形对象 ,若存在,则将 标记为已访问状态;若不存在,则将 加入到历史图形队列 ,同时将 标记为已访问。最后,将经过上述拓展的历史图形队列 记为第一图形集合,第一图形集合又称第一图形队列。同时,采用全部新增的 组成新增图形信息子集 ,新增图形信息子集
包含所有从历史图形队列 演化至图形队列 后的加入的图形。队列拓展生
成第一图形队列 的步骤执行示例如图9所示,图形A、C、E和F被标记为已访问状态,图形D和H被加入到 同时被标记为已访问状态,得到第一图形队列 。
[0196] S52、比对第一图形集合内的第一图形对象与各目标图形对象,确定图形移除信息子集。
[0197] 在本发明实施例中,将存在于第一图形队列 但不存在于图形队列 的历史图形对象,从第一图形队列 中剔除。采用所有移除的历史图形对象 ,构建图形移除信息子集。
[0198] S53、将第一图形集合移除图形移除信息子集对应的第一图像对象后的图形集合作为第二图形集合。
[0199] 在本发明实施例中,将存在于第一图形集合 但不存在于图形队列 的历史图形对象 ,从第一图形队列 中剔除。对第一图形队列 进行遍历,检查每一个历史图形对象 是否被标记为已访问,若发现 未被访问过,则将 从 和shape_table中移除。将经过上述裁剪步骤的第一图形队列 记为第二图形集合 ,又称第二图形队列。同时,将被全部移除的 组成图形更新信息子集 ,该集合包含
所有从历史图形队列 演化至图形队列 后的被移除的图形。如图10所示,图形B和G因未被标记为已访问状态,从 中移除,之后得到 。
[0200] S54、选取第二图形集合内与目标图形对象所属的标识值相同的第二图形对象。
[0201] 在本发明实施例中,将第二图形集合 内的第二图形对象与图形队列 内的目标图形对象进行比对,筛选出第二图形集合 中与图形队列 内的目标图形对象 的相同的第二图形对象。
[0202] S55、比对第二图形对象与对应的目标图形对象的图形样式和位置,确定样式更新信息子集和位置更新信息子集。
[0203] 在本发明实施例中,对 和 中的 相同的图形进行图形的样式信息和图形的位置信息比较。经过对比,若发现有任意上述一项或多项存在更新,则将这些更新信息记录下来,得到对应的样式更新信息子集 和位置更新信息子集 。
[0204] S56、按照新增图形信息子集、图形移除信息子集、样式更新信息子集和位置更新信息子集,确定数据结构集对应的更新图形。
[0205] 在本发明实施例中,采用新增图形信息子集、图形移除信息子集、样式更新信息子集和位置更新信息子集,构建图形更新集合(Shape Patch Set,SDS),从而确定数据结构集对应的更新图形。SDS是一个包含描述 与 间的图形更新信息的集合,其表达式为:,表5列出了图形更新集合内所有更
新信息子集的具体释义。
[0206] 表5 更新信息子集及其释义
[0207]
[0208] S57、分别渲染更新图形,得到数据结构集对应的图形动画。
[0209] 在本发明实施例中,比对第二图形对象与对应的目标图形对象的根本目标在于,得到更新图形,更新图形又称图形动画单元,将全部更新图形构建数据结构集对应的图形动画,图形动画又称图形动画序列 。为图形动画序列 中的每一个图形动画单元赋予一个动画类型 ;然后图形引擎根据 ,创建对应的动画对象;最后将这些动画对象依次执行,就可以以 的可视化视图为初始状态,以动画形式呈现从 过渡至 的可视化效果。将图形动画序列 转换为动画对象并按呈现至可视化视图的具体步骤为:
[0210] Step1、遍历图形动画序列 ,按照图形动画单元的 和动画的起始和终止状态数据,使用图形引擎生成对应的动画对象,并且将这些动画对象保存为一个动画对象序列。
[0211] Step2、检查动画执行标志 ,若为true,则说明上一个动画序列的动画对象尚未执行完毕,需要挂起当前想要执行的动画对象序列,直至上一个动画对象序列的动画对象全部执行完成,进入Step3;否则直接进入Step3。其中,动画执行标志是判断当前图形动画序列中是否存在动画单元在执行动画的一个变
量,默认为false,当一个新的动画序列开始执行动画时,设置为true。
[0212] Step3、遍历动画对象序列,对每一个动画对象,传入给定的或由用户自定义的动画时长和缓动函数,并执行该动画,并将 设置为true。当动画序列中所有动画都执行完成时,将 置为false。
[0213] 在本发明实施例中,如图11所示,当接收到数据结构集时,首先将数据结构集进行通用线性表示,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。其次,分别对线性结构进行结构模型抽象,通过对线性结构 中的节点和指针进行识别和提取,构造模型对象,得到模型队列 。接着对模型队列 进行结构模型布局,确定模型队列 中节点和指针的位置,然后对布局后的模型队列 进行图形映射,为每个目标模型对象绑定图形,得到图形队列 ,比对历史图形队列 和图形队列 内的图形,获取两者之间的图形更新信息。将图形更新信息转换为图形动画单元即更新图形,并采用所有更新图形构建成图形动画集合,调用图形引擎,依次解释和执行图形动画集合中的图形动画单元,动态、平滑和直观地呈现出数据结构在变化前后完整的变化,使得数据结构可视化程序开发者可以以更低的成本进行任意数据结构的动态可视化开发。
[0214] 请参阅图12,图12为本发明实施例三提供的一种数据结构动态可视化系统的结构框图。
[0215] 本发明实施例提供一种数据结构动态可视化系统,包括:
[0216] 线性结构得到模块1201,用于当接收到数据结构集时,对数据结构集内的各数据结构进行线性转换,分别得到对应的线性结构。
[0217] 目标模型对象构建模块1202,用于根据全部线性结构和预设的可视化配置表,构建各数据结构对应的多个目标模型对象。
[0218] 目标图形对象得到模块1203,用于按照可视化配置表分别对目标模型对象进行图形映射,得到数据结构集对应的目标图形对象。
[0219] 图形动画得到模块1204,用于比对目标图形对象与历史图形对象,确定更新图形并渲染,得到数据结构集对应的图形动画。
[0220] 可选地,预设的可视化配置表包括节点配置项、指针配置项和布局定义函数,目标模型对象构建模块1202包括:
[0221] 初始模型对象确定模块,用于根据线性结构、节点配置项和指针配置项,确定数据结构对应的多个初始模型对象。
[0222] 中间模型对象确定模块,用于根据初始模型对象、指针配置信息和布局定义函数,确定对应的中间模型对象。
[0223] 模型对象聚类簇得到模块,用于按照中间模型对象所属的数据结构类型对中间模型对象进行聚类,得到多个模型对象聚类簇。
[0224] 目标模型确定子模块,用于按照预设的可视化容器尺寸调整各模型对象聚类簇所处的位置,得到数据结构对应的多个目标模型对象。
[0225] 可选地,初始模型对象确定模块包括:
[0226] 节点配置项和指针配置项匹配模块,用于分别采用线性结构内的每个节点字典作为关键字,从对应的可视化配置表中分别匹配对应的节点配置项和指针配置项。
[0227] 节点对象构建模块,用于采用节点配置项,构建节点字典对应的节点对象。
[0228] 指针对象构建模块,用于采用指针配置项,构建节点字典对应的指针对象。
[0229] 初始模型对象确定子模块,用于采用线性结构对应的全部节点对象和指针对象作为对应的数据结构的多个初始模型对象。
[0230] 可选地,指针配置信息包括锚点配置,中间模型对象确定模块包括:
[0231] 节点位置得到模块,用于将初始模型对象中的全部节点对象作为参数,分别代入对应的布局定义函数,得到节点对象对应的节点位置。
[0232] 指针位置确定模块,用于获取初始模型对象中各指针对象对应的起始节点位置和目标节点位置,并结合对应的锚点配置,确定指针对象对应的指针位置。
[0233] 中间模型对象确定子模块,用于按照节点位置和指针位置更新对应的初始模型对象的位置,得到对应的中间模型对象。
[0234] 可选地,预设的可视化容器尺寸包括可视化容器宽度和可视化容器高度,目标模型确定子模块包括:
[0235] 整体包围矩形构建模型,用于采用全部模型对象聚类簇的并集,构建数据结构集对应的整体包围矩形。
[0236] 第一和值计算模型,用于计算整体包围矩形的中心横坐标值与整体包围矩形的宽度中值的第一和值。
[0237] 目标水平位移距离得到,用于计算可视化容器宽度和第一和值之间的差值,得到目标水平位移距离。
[0238] 第二和值计算模块,用于计算整体包围矩形的中心纵坐标值与整体包围矩形的高度中值的第二和值。
[0239] 目标垂直位移距离得到模块,用于计算可视化容器高度与第二和值之间的差值,得到目标垂直位移距离。
[0240] 目标模型对象得到模块,用于按照目标水平位移距离和目标垂直位移距离移动各模型对象聚类簇,得到数据结构对应的多个目标模型对象。
[0241] 可选地,目标图形对象得到模块1203包括:
[0242] 节点配置项或指针配置项确定模块,用于按照目标模型对象所属的类型,确定目标模型对象对应的节点配置项或指针配置项。
[0243] 图形对象确定,用于按照节点配置项或指针配置项,确定目标模型对象对应的图形对象。
[0244] 目标图形对象得到子模块,用于采用全部图形对象作为数据结构集对应的多个目标图形对象。
[0245] 可选地,图形动画得到模块1204包括:
[0246] 新增图形信息子集和第一图形集合构建模块,用于根据目标图形对象与历史图形对象,构建新增图形信息子集和第一图形集合。
[0247] 图形移除信息子集确定模块,用于比对第一图形集合内的第一图形对象与各目标图形对象,确定图形移除信息子集。
[0248] 第二图形集合确定模块,用于将第一图形集合移除图形移除信息子集对应的第一图像对象后的图形集合作为第二图形集合。
[0249] 第二图形对象选取模块,用于选取第二图形集合内与目标图形对象所属的标识值相同的第二图形对象。
[0250] 样式更新信息子集和位置更新信息子集确定模块,用于比对第二图形对象与对应的目标图形对象的图形样式和位置,确定样式更新信息子集和位置更新信息子集。
[0251] 更新图形确定模块,用于按照新增图形信息子集、图形移除信息子集、样式更新信息子集和位置更新信息子集,确定数据结构集对应的更新图形。
[0252] 图形动画得到模块,用于分别渲染更新图形,得到数据结构集对应的图形动画。
[0253] 可选地,新增图形信息子集和第一图形集合构建模块包括:
[0254] 哈希表构建模块,用于以全部历史图形对象所属的类型作为图形关键字,以全部历史图形对象作为值,构建哈希表。
[0255] 新增图形信息子集构建模块,用于以目标图形对象所属的类型作为图像关键字,筛选全部未在哈希表内的目标图形对象,并构建新增图形信息子集。
[0256] 第一图形集合构建模块,用于采用新增图形信息子集内全部对应的目标图形对象和全部历史图形对象,构建第一图形集合。
[0257] 可选地,系统还包括:
[0258] 节点配置项构建模块,用于按照数据结构内各节点所属的节点类型,构建节点对应的节点配置项。
[0259] 指针配置项构建模块,用于按照数据结构内各节点对应的自定义指针域,构建节点对应的指针配置项。
[0260] 布局定义函数构建模块,用于按照数据结构的预设布局条件,构建数据结构对应的布局定义函数。
[0261] 可视化配置表构建模块,用于采用全部节点配置项、指针配置项和布局定义函数,构建数据结构对应的可视化配置表。
[0262] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0263] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0264] 作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0265] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0266] 集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0267] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。