Как создать список соседей для каждого узла в C#?
Я пишу алгоритм Дейкстры,я хочу создать список соседей для каждого узла, я пишу немного кода, но мой код не создает список соседей для каждого узла. мой код имеет проблему, которая не различает соседей для каждого узла, и именно поэтому сохраняет полный список соседей для каждого узла.
Изображение[^]
например: Node[id] ==> (сосед, вес)
Node[0] ==> (1,123) Node[0] ==> (2,113) Node[0] ==> (3,214) Node[0] ==> (4,203) Node[1] ==> (2,175) Node[1] ==> (4,214)
public class Graph { public Dictionary<int, List<KeyValuePair<int, int>>> vertices = new Dictionary<int, List<KeyValuePair<int, int>>>(); public void AddVertex(int id, List<KeyValuePair<int, int>> edges) { vertices[id] = edges; } } private Graph g = new Graph(); public int Id { get; set; } private List<KeyValuePair<int, int>> dic = new List<KeyValuePair<int, int>>(); private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { if (e.Button != MouseButtons.Right) { var result = circleManager.HitTest(e.Location); if (result != -1) { circlesSourceAndDestination.Add(circleManager.Circles[result]); if (Count == 1) { Id = result; } else if (Count == 2) { var weigth = CalculateLengthSourceAndDestination(circlesSourceAndDestination); circlesSourceAndDestination.Clear(); if (weigth < 0) { weigth *= -1; } dic.Add(new KeyValuePair<int, int>(result, weigth)); g.AddVertex(Id, dic); //neighborList.Add(new KeyValuePair<int, int>(result, weigth)); //newNode.Neighbors = neighborList; //graph.Add(newNode); Count = 0; } Count++; } } else { var result = circleManager.HitTest(e.Location); if (result != -1) { circleManager.Circles[circleManager.HitTest(e.Location)].Selected = true; circleManager.Circles[result].SelectFillColor = Color.Red; } } pictureBox1.Invalidate(); }
Что я уже пробовал:
я хочу создать список соседей для каждого узла
Patrice T
Где в этом коде вы ищете соседей?
Откуда вы знаете, что узел а является соседом другого ?
Philippe Mori
Непонятно, какая у вас проблема? Расскажите нам, что вы получаете и чего ожидаете.
Philippe Mori
Если вы не можете правильно объяснить, что не работает с вашим кодом, вам трудно помочь, потому что мы должны попытаться понять частичный код, не имея представления о том, что он делает в настоящее время. Было бы лучше для вас использовать отладчик и найти проблему самостоятельно, если вы не в состоянии предоставить нам всю необходимую информацию, чтобы мы могли вам помочь.