用 Javascript 创建图表


我们将创建支持权重、有向和无向类型的图类。这将使用邻接表来实现。在我们转向更高级的概念时,图的权重和有向特性将会派上用场。

邻接表是一个由单独列表组成的数组 A。数组 Ai 的每个元素都是一个列表,其中包含与顶点 i 相邻的所有顶点。我们使用 2 个成员(节点和边)对其进行定义。

让我们通过定义我们的类和一些我们将用来为我们的图添加节点和边的函数来设置图类。

我们最初将定义以下方法 −

  • addNode:将一个节点添加到图中
  • addEdge:将一条无向边添加到图中
  • addDirectedEdge:添加一条有向边

示例

class Graph {
   constructor() {
      this.edges = {};
      this.nodes = [];
   }
   addNode(node) {
      this.nodes.push(node);
      this.edges[node] = [];
   }
   addEdge(node1, node2) {
      this.edges[node1].push(node2);
      this.edges[node2].push(node1);
   }
   addDirectedEdge(node1, node2) {
      this.edges[node1].push(node2);
   }
   display() {
      let graph = ""; this.nodes.forEach(node => {
         graph += node + "->" + this.edges[node].join(", ") + "
";       });       console.log(graph);    } }

你可以使用 − 来测试这些方法和我们的类

示例

let g = new Graph();
g.addNode("A");
g.addNode("B");
g.addNode("C");
g.addNode("D");
g.addNode("E");
 
g.addEdge("A", "C");
g.addEdge("A", "B");
g.addDirectedEdge("A", "D");
g.addEdge("D", "E");

g.display();

输出

这会输出 −

A->C, B, D
B->A
C->A
D->E
E->D

更新于: 2020 年 6 月 15 日

1000+ 浏览

提升您的事业

完成课程获得认证

开始
广告
© . All rights reserved.