-
Notifications
You must be signed in to change notification settings - Fork 0
/
graph.js
48 lines (40 loc) · 1.05 KB
/
graph.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// implementation of graph
// undirected graph
class Graph{
constructor(){
this.adjacencyList = {};
}
// adding vertex
addVertex(vertex){
if(!this.adjacencyList[vertex]){
this.adjacencyList[vertex] = [];
}
}
// adding an edge
addEdge(vertex1, vertex2){
this.adjacencyList[vertex1].push(vertex2);
this.adjacencyList[vertex2].push(vertex1);
}
// removing an edge
removeEdge(vertex1, vertex2){
this.adjacencyList[vertex1] = this.adjacencyList[vertex1].filter(v => v !== vertex2 );
this.adjacencyList[vertex2] = this.adjacencyList[vertex2].filter(v => v !== vertex1 );
}
//removing a vertex
removeVertex(vertex){
while(this.adjanceyList[vertex].length){
const adjacentVertex = this.adjacencyList[vertex].pop()
this.removeEdge(vertex, adjacentVertex);
}
delete this.adjacencyList[vertex];
}
}
let g = new Graph();
g.addVertex("Dallas");
g.addVertex("Tokyo");
g.addVertex("Aspen");
g.addEdge("Dallas", "Tokyo");
g.removeEdge("Dallas", "Tokyo");
console.log(g.adjacencyList)
g.removeVertex("Tokyo")
console.log(g.adjacencyList)