FLGameCompanion/FLCompanionByDvurechensky/Models/Graph.cs

72 lines
1.8 KiB
C#
Raw Normal View History

2025-05-12 06:41:29 +03:00
/*
* Author: Nikolay Dvurechensky
* Site: https://www.dvurechensky.pro/
* Gmail: dvurechenskysoft@gmail.com
* Last Updated: 12 мая 2025 06:38:00
* Version: 1.0.27
*/
using System.Collections.Generic;
2024-10-05 07:50:50 +03:00
/// <summary>
/// Граф
/// </summary>
public class Graph
{
/// <summary>
/// Список вершин графа
/// </summary>
public List<GraphVertex> Vertices { get; }
/// <summary>
/// Конструктор
/// </summary>
public Graph()
{
Vertices = new List<GraphVertex>();
}
/// <summary>
/// Добавление вершины
/// </summary>
/// <param name="vertexName">Имя вершины</param>
public void AddVertex(string vertexName)
{
Vertices.Add(new GraphVertex(vertexName));
}
/// <summary>
/// Поиск вершины
/// </summary>
/// <param name="vertexName">Название вершины</param>
/// <returns>Найденная вершина</returns>
public GraphVertex FindVertex(string vertexName)
{
foreach (var v in Vertices)
{
if (v.Name.Contains(vertexName))
{
return v;
}
}
return null;
}
/// <summary>
/// Добавление ребра
/// </summary>
/// <param name="firstName">Имя первой вершины</param>
/// <param name="secondName">Имя второй вершины</param>
/// <param name="weight">Вес ребра соединяющего вершины</param>
public void AddEdge(string firstName, string secondName, int weight)
{
var v1 = FindVertex(firstName);
var v2 = FindVertex(secondName);
if (v2 != null && v1 != null)
{
v1.AddEdge(v2, weight);
v2.AddEdge(v1, weight);
}
}
}