티스토리 뷰
#class Graph -생성된 node들을 가지고있는 List<Node>nodes 생성
AddVertex는 매개변수로 받은 node를 nodes에 Add
AddEdge는 매개변수로 받은 Node a와 Node b를 a.adjacency에 추가(서로 같은 node들은 인접정점이 될수 없음)
PrintAll- 모두 출력. for반복문으로 nodes.Count만큼 반복하며 nodes의인덱스의data 출력.
foreach를 통해 Node a=this.nodes[i]의 요소들( .data) 출력(가시성을 위해 -"{0}"으로 이어져있음을 보여주자)
#class Node-data를 매개변수로 받아 data를 가지고있는 node로 생성됨(생성자), 정점들끼리 이어져있는 인접정점 List<Node>adjacency가 생성됨
#class App
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Graph
{
internal class App
{
public App()
{
Graph graph= new Graph();
Node n0 = new Node("a"); //data할당
Node n1 = new Node("b");
graph.AddVetex(n0); //정점 추가
graph.AddVetex(n1);
graph.AddEdge(n0,n1); //인접정점 추가
graph.printAll();
}
}
class Node //노드(정점),vertex
{
//data를 가지고있는 node들
//인접정점 adjacency를 List로
//생성자 -data를 매개변수로 받고 인접정점 List생성
public string data;
public List<Node> adjacency; //인접정점
//생성자
public Node(string data)
{
this.data = data;
this.adjacency = new List<Node>();
}
}
class Graph
{
//node들을 가지고있는 List
private List<Node> nodes;
//생성자
public Graph()
{
//nodes 리스트 생성
this.nodes = new List<Node>();
}
//메서드(기능)
public void AddVetex(Node node) //Vertex추가,nodes에 할당
{
this.nodes.Add(node);
}
public void AddEdge(Node a, Node b) //Edge추가,연결되는 정점들 adjacency에 추가
{
a.adjacency.Add(b); //a와 a는 인접정점이 될수없다
b.adjacency.Add(a);
}
public void printAll() //출력(nodes)
{
for(int i=0; i<nodes.Count; i++)
{
Console.WriteLine(nodes[i].data);
Node a = this.nodes[i];
foreach(var ab in a.adjacency)
{
Console.WriteLine(ab.data);
}
}
}
}
}
'C# > 복습' 카테고리의 다른 글
Unity복습(Skill,Enemy hpPoint) (0) | 2023.02.20 |
---|---|
Unity 복습 (Button, Switch,Slide,Popup) (0) | 2023.02.19 |
직렬화, 역직렬화 (0) | 2023.01.24 |
Linq (0) | 2023.01.23 |
람다식(문),Action, Func (1) | 2023.01.23 |