노드나 노드들의 연결을 모은 것
정점 사이에 간선이 있는지 체크하여 행렬을 만든다. 보통 있으면 1, 없으면 0을 사용한다.
각 정점들의 간선을 리스트로 저장한다, 이때 정점이 숫자가 아니거나 숫자 사이에 큰 차이가 있을 경우 맵을 이용하여 다음과 같이 저장 할 수 있다.
인접리스트가 인접 행렬에 비해 차지 하는 공간이 적다.
class Graph{ constructor(){ this.adjaceneyList = {} } }
addVertex(vertex){ if(!this.adjaceneyList[vertex]) this.adjaceneyList[vertex] = [] }
addEdge(vertex1,vertex2){ if(this.adjaceneyList[vertex1]) this.adjaceneyList[vertex1].push(vertex2) if(this.adjaceneyList[vertex2]) this.adjaceneyList[vertex2].push(vertex1) }
removeEdge(vertex1,vertex2){ if(this.adjaceneyList[vertex1]){ this.adjaceneyList[vertex1] = this.adjaceneyList[vertex1].filter(v=> v !== vertex2) } if(this.adjaceneyList[vertex2]){ this.adjaceneyList[vertex2] = this.adjaceneyList[vertex2].filter(v=> v !== vertex1) } }
removeVertex(vertex){ if(this.adjaceneyList[vertex]){ this.adjaceneyList[vertex].forEach(v=>{ this.removeEdge(vertex,v) }) delete this.adjaceneyList[vertex] } }