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