2 차 세계 대전 일기 - 9 일 째 - 데이터 구조: 그림 (2)
그림 의 전체 코드 구현
class Graph(private val vertices: ArrayList> = ArrayList(),
private val adjacencyList: ArrayList> = ArrayList()) {
fun createVertex(value: T): Vertex {
val matchingVertices = vertices.filter { it.data == value }
if (matchingVertices.isNotEmpty()) {
return matchingVertices.last()
}
val vertex = Vertex(value, adjacencyList.size)
vertices.add(vertex)
adjacencyList.add(EdgeList(vertex))
return vertex
}
fun addDirectedEdge(fromVertex: Vertex, toVertex: Vertex, weightValue: Double) {
val edge = Edge(from = fromVertex,
to = toVertex,
weight = weightValue)
fromVertex.addEdge(edge)
val fromIndex = vertices.indexOf(fromVertex)
adjacencyList[fromIndex].edges.add(edge)
}
fun addUnDirectedEdge(fromVertex: Vertex, toVertex: Vertex, weightValue: Double = 0.0) {
addDirectedEdge(fromVertex, toVertex, weightValue)
addDirectedEdge(toVertex, fromVertex, weightValue)
}
fun printAdjacencyList() {
(0 until vertices.size)
.filterNot { adjacencyList[it].edges.isEmpty() }
.forEach { println("""${vertices[it].data} ->[${adjacencyList[it].edges.joinToString()}] """) }
}
}
DFS (깊이 우선)
int visit[maxSize];
void DFS(AGraph *G, int v) {
ArcNode *p;
visit[v] = 1;
cout << v << endl;
p = G->adjlist[v].firstarc; // p v
while (p != nullptr) {
if (visit[p->adjvex] == 0) {
DFS(G, p->adjvex);
p = p->nextarc;
}
}
}
BFS (넓이 우선)
void BFS(AGraph *G, int v) {
ArcNode *p;
int que[maxSize], front = 0, rear = 0; //
int j;
cout << v << endl;
visit[v] = 1;
rear = (rear+1)%maxSize; //
que[rear] = v;
while (front != rear) {
front = (front+1)%maxSize; //
j = que[front];
p = G->adjlist[j].firstarc; // p j
while (p != nullptr) { // p
if (visit[p->adjvex] == 0) {
cout << p->adjvex << endl;
rear = (rear+1)%maxSize;
que[rear] = p->adjvex;
}
p = p->nextarc;
}
}
}
또한 최소 생 성 트 리, 최 단 경로 등 종합 문 제 는 스스로 예 제 를 풀 고 문제 풀이 절 차 를 정확히 찾 으 면 자신 이 원 하 는 점 수 를 얻 을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.