图有两种表示形式:
邻接表
在此方法中,我们在左侧列出所有可能的节点,并在右侧显示已连接的节点 。
文章插图
邻接矩阵
邻接矩阵显示行和列中的节点,行和列的交点解释节点之间的关系,0表示未链接,1表示链接,> 1表示不同的权重 。
文章插图
要查询图中的节点,必须使用"广度优先"(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种常见数据结构】
推荐阅读
- 火锅必吃的几种素菜,都不比肉差。你心中的“素菜之王”是谁?
- 初探四川民间文学中的民俗茶俗
- MySQL中的并发控制概览
- CSS3中的BFC是何方神圣
- 云贵高原地势较高冰川广布 岩溶地貌最集中的地区是云贵高原吗
- 传说中的钟馗是怎么样一个神 钟馗到底是神还是鬼
- 军统谍战剧电视剧大全 电视剧深渊警局中的内鬼是谁
- 令狐冲生命中的三个女人 令狐冲喜欢东方不败吗
- 网络技术中的NAT地址转换技术,一分钟了解下
- 分析:网络中的各种互通与不通