邻接表
存储方式:表头存放节点,相邻节点存放于之后的链表中。
** 使用 Map 模拟 **
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Graph { constructor() { this.point = [] this.map = new Map() }
addPoint(point) { this.point.push(point) this.map.set(point, []) }
addEdge(pointA, pointB) { this.map.get(pointA).push(pointB) this.map.get(pointB).push(pointA) }
print() { for (let item of this.point) { console.log(item + " -> " + this.map.get(item).join(",")) } } }
|
Test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| var graph = new Graph() var topArr = ["A", "B", "C", "D", "E", "F", "G", "H", "I"] for (let item of topArr) { graph.addPoint(item) }
graph.addEdge("A", "B") graph.addEdge("A", "D") graph.addEdge("A", "E") graph.addEdge("A", "H") graph.addEdge("F", "G") graph.addEdge("I", "B") graph.addEdge("I", "C")
graph.print()
|