在 Javascript 中创建图形

web developmentfront end technologyjavascript

我们将创建一个支持权重以及有向和无向类型的图形类。这将使用邻接表来实现。随着我们转向更高级的概念,图形的权重和有向性质都将派上用场。

邻接表是一个由独立列表组成的数组 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

相关文章