// create a graph class class Graph { // defining vertex array and // adjacent list constructor (noOfVertices) { this.noOfVertices = noOfVertices this.AdjList = new Map() } // functions to be implemented // addVertex(v) // addEdge(v, w) // printGraph() // bfs(v) // dfs(v) } // add vertex to the graph addVertex(v) { // initialize the adjacent list with a // null array this.AdjList.set(v, []) } // add edge to the graph addEdge(v, w) { // get the list for vertex v and put the // vertex w denoting edge between v and w this.AdjList.get(v).push(w) // Since graph is undirected, // add an edge from w to v also this.AdjList.get(w).push(v) } // Prints the vertex and adjacency list printGraph() { // get all the vertices var get_keys = this.AdjList.keys() // iterate over the vertices for (var i of get_keys) { // great the corresponding adjacency list // for the vertex var get_values = this.AdjList.get(i) var conc = '' // iterate over the adjacency list // concatenate the values into a string for (var j of get_values) { conc += j + ' ' } // print the vertex and its adjacency list console.log(i + ' -> ' + conc) } } // Example var graph = new Graph(6) var vertices = ['A', 'B', 'C', 'D', 'E', 'F'] // adding vertices for (var i = 0; i < vertices.length; i++) { g.addVertex(vertices[i]) } // adding edges g.addEdge('A', 'B') g.addEdge('A', 'D') g.addEdge('A', 'E') g.addEdge('B', 'C') g.addEdge('D', 'E') g.addEdge('E', 'F') g.addEdge('E', 'C') g.addEdge('C', 'F') // prints all vertex and // its adjacency list // A -> B D E // B -> A C // C -> B E F // D -> A E // E -> A D F C // F -> E C g.printGraph()