From b2abfc24e3d0ba550f7dd335326c565bfae74caa Mon Sep 17 00:00:00 2001 From: naor Date: Thu, 2 May 2019 12:53:40 +0300 Subject: [PATCH] adding Graph data structure --- Data Structures/Graph/Graph.js | 50 ++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Data Structures/Graph/Graph.js diff --git a/Data Structures/Graph/Graph.js b/Data Structures/Graph/Graph.js new file mode 100644 index 0000000000..ffe82557cd --- /dev/null +++ b/Data Structures/Graph/Graph.js @@ -0,0 +1,50 @@ + +class Graph { + + constructor() { + this.adjacencyMap = {} + } + + addVertex(v) { + this.adjacencyMap[v] = []; + } + + containsVertex(vertex) { + return typeof (this.adjacencyMap[vertex]) !== "undefined" + } + + addEdge(v, w) { + let result = false + if (this.containsVertex(v) && this.containsVertex(w)) { + this.adjacencyMap[v].push(w); + this.adjacencyMap[w].push(v); + result = true + } + return result + } + + + + printGraph() { + let keys = Object.keys(this.adjacencyMap); + for (let i of keys) { + let values = this.adjacencyMap[i]; + let vertex = ""; + for (let j of values) + vertex += j + " "; + console.log(i + " -> " + vertex); + } + } + +} + + +const example = () => { + let g = new Graph() + g.addVertex(1) + g.addVertex(2) + g.addVertex(3) + g.addEdge(1, 2) + g.addEdge(1, 3) + g.printGraph() +} \ No newline at end of file