Javascript中的8种常见数据结构( 四 )


图有两种表示形式:
邻接表
在此方法中,我们在左侧列出所有可能的节点,并在右侧显示已连接的节点 。

Javascript中的8种常见数据结构

文章插图
 
邻接矩阵
邻接矩阵显示行和列中的节点,行和列的交点解释节点之间的关系,0表示未链接,1表示链接,> 1表示不同的权重 。
Javascript中的8种常见数据结构

文章插图
 
要查询图中的节点,必须使用"广度优先"(BFS)方法或"深度优先"(DFS)方法在整个树形网络中进行搜索 。
让我们看一个用Javascript编写BFS的示例:
function bfs(graph, root) { var nodesLen = {}; for (var i = 0; i < graph.length; i++) { nodesLen[i] = Infinity; } nodesLen[root] = 0; var queue = [root]; var current; while (queue.length != 0) { current = queue.shift(); var curConnected = graph[current]; var neighborIdx = []; var idx = curConnected.indexOf(1); while (idx != -1) { neighborIdx.push(idx); idx = curConnected.indexOf(1, idx + 1); } for (var j = 0; j < neighborIdx.length; j++) { if (nodesLen[neighborIdx[j]] == Infinity) { nodesLen[neighborIdx[j]] = nodesLen[current] + 1; queue.push(neighborIdx[j]); } } } return nodesLen;}测试一下:
var graph = [ [0, 1, 1, 1, 0], [0, 0, 1, 0, 0], [1, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 0, 0]];console.log(bfs(graph, 1));结果:
{ 0: 2, 1: 0, 2: 1, 3: 3, 4: Infinity}就是这样–我们涵盖了所有常见的数据结构,并提供了JavaScript中的示例 。这应该使您更好地了解计算机中数据结构的工作方式 。编码愉快!
 
(本文翻译自Kingsley Tan的文章《8 Common Data Structures in Javascript》,参考 https://medium.com/better-programming/8-common-data-structures-in-javascript-3d3537e69a27)

【Javascript中的8种常见数据结构】


推荐阅读