繁体   English   中英

使用json对象的邻接表

[英]adjacency list using json object

我想使用json对象创建一个邻接表。 我想以以下格式为邻接表实现json对象。

var JSONobj= {node1:[{x1,y1},{x3,y3},{x4,y4}], node2:[{x2,y2},{x3,y3}], node3:[]}

我的疑问是,是否可以动态添加诸如JSONobj.node3[0]={x4,y4}类的坐标列表的值? 还是有更好的方法从对象声明之外将值添加到JSONobj?

您可以将元素推入JSON对象,因为它只是一个漂亮的数组。

JSONobj.push({"newElement":"value"});

Javascript中的JSON是普通的(结构化)Javascript对象。 因此,首先,它必须遵守对象语法。 node1x1等必须是定义的变量或显式常量。 {x1, x2}在JS中未定义。 它必须是attribute: value ,例如{x1: 1, "x2": "a2"} 一旦有了语法上有效的对象,就可以根据需要对其进行操作。 例如

var node1 = "node1";
var x1 = "x1";
var y1 = "y1";
var x3 = "x3";
var y3 = "y3";
var JSONobj= {node1: [{x1:1,y1:1}, {x3:2,y3:3}], 
    "node2": [{"x2":1,"y2":2}], "node3": []};
JSONobj.node3[0] = {"x4":4,"y4":4};   
JSONobj.node4 = [];
JSONobj.node4.push({"x5":5, "x6":6});

如果要在JS外部使用此对象(例如,将其发送到服务器),则需要将其转换为JSON字符串:

var JSONtext = JSON.stringify(JSONobj);

如果要将JSON字符串转换为JS中的JSON对象,请使用:

var JSONobj = JSON.parse(JSONtext);

使用JSON实现邻接表时遇到了一些问题。 第一件事是,我不能在id:value对中使用“整数值”作为id。 因此,我重新考虑自己的问题并以另一种方式进行处理,并实现了以下邻接列表(作为列表的列表)。

当前解决方案

图的每个节点通过其笛卡尔坐标的表示实际上是一种低级表示。 在算法级别,我们需要为每个顶点关联一个唯一的数字。 例如,您可以映射:

  • 顶点0 --->(100,200)
  • 顶点1 --->(45,78)
  • 顶点2 --->(198,213)

我列出了所有顶点的列表:例如: nodes = [[100,200],[45,78],[198,213]]

其中nodes[1]给出顶点1的坐标。

邻接列表是列表列表的形式。

adj_list = [[1,2,3], [0, 4, 5] ]

adj_list[1]为您提供与node1相邻的节点列表。 等等..

这意味着:与顶点0相邻(直接相连),您有顶点1、2、3。

与顶点1相邻,顶点0、4、5 ...

我发现此解决方案更适合我的问题。 感谢Dave和Jiri的回复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM