用 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
廣告