using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Helloworld1
{
class Graph
{
public class Vertex
{
public string Data
{
get;
private set;
}
public LinkedList<Vertex> neighbors;
public LinkedList<int> weights;
public Vertex(string data)
{
this.neighbors = new LinkedList<Vertex>();
this.weights = new LinkedList<int>();
this.Data = data;
}
}
//정점들을 그룹화 하고 관리
private List<Vertex> vertexes;
public Graph()
{
//컬렉션 초기화
this.vertexes = new List<Vertex>();
}
public Vertex AddVetex(string data)
{
var vertex = new Vertex(data);
this.vertexes.Add(vertex);
return vertex;
}
public void AddVertex(Vertex vertex)
{
this.vertexes.Add(vertex);
}
public void AddEdge(Vertex from, Vertex to, int weight)
{
from.neighbors.AddLast(to);
to.neighbors.AddLast(from);
from.weights.AddLast(weight);
to.weights.AddLast(weight);
}
public void Print()
{
foreach (Vertex vertex in this.vertexes)
{
for (int i = 0; i < vertex.neighbors.Count; i++)
{
var v = vertex.neighbors.ElementAt(i);
var w = vertex.weights.ElementAt(i);
Console.WriteLine("{0} - {1} - {2}", vertex.Data, w, v.Data);
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Helloworld1
{
class App
{
public App()
{
var graph = new Graph();
var seoul = graph.AddVetex("서울");
var gangrung = graph.AddVetex("강릉");
var deajun = graph.AddVetex("대전");
var deagu = graph.AddVetex("대구");
var busan = graph.AddVetex("부산");
graph.AddEdge(seoul, gangrung, 10);
graph.AddEdge(seoul, deagu, 7);
graph.AddEdge(seoul, deajun, 6);
graph.AddEdge(deajun, busan, 7);
graph.AddEdge(deagu, busan, 3);
graph.AddEdge(deagu, gangrung, 4);
graph.Print();
}
}
}