在 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+ 瀏覽量

開啟你的職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.