在 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