在 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

更新于: 15-Jun-2020

1000+ 浏览量

开启你的职业生涯

完成课程以获得认证

开始
广告