I was building a graph in JavaScript and I met this problem.
The output is not what I want.
What I know about graphs is between each node has edge and
this adjacentList's goal is to show the edge and make a connection to the node.
If my code is not complete, please give me a hint to finish it or just fix my code and meet the request.
The output should be:
Answer:
0-->1 2
1-->3 2 0
2-->4 1 0
3-->1 4
4-->3 2 5
5-->4 6
6-->5
Here is my JS:
class Graph {
constructor() {
this.numberOfNodes = 0;
this.adjacentList = {
};
}
addVertex(node) {
this.adjacentList[node]=[];
this.numberOfNodes++;
}
addEdge(node1, node2) {
this.adjacentList[node1]=[];
this.adjacentList[node1].push(node2);
}
showConnections() {
const allNodes = Object.keys(this.adjacentList);
for (let node of allNodes) {
let nodeConnections = this.adjacentList[node];
let connections = "";
let vertex;
for (vertex of nodeConnections) {
connections += vertex + " ";
}
console.log(node + "-->" + connections);
}
}
}
const myGraph = new Graph();
myGraph.addVertex('0');
myGraph.addVertex('1');
myGraph.addVertex('2');
myGraph.addVertex('3');
myGraph.addVertex('4');
myGraph.addVertex('5');
myGraph.addVertex('6');
myGraph.addEdge('3', '1');
myGraph.addEdge('3', '4');
myGraph.addEdge('4', '2');
myGraph.addEdge('4', '5');
myGraph.addEdge('1', '2');
myGraph.addEdge('1', '0');
myGraph.addEdge('0', '2');
myGraph.addEdge('6', '5');
myGraph.showConnections();