public AdjacencyEdge <T> CreateEdge(AdjacencyVertex <T> start, AdjacencyVertex <T> end, int weight) { var edge = new AdjacencyEdge <T>(start, end); edge.Weight = weight; return(edge); }
public IEnumerable <AdjacencyEdge <T> > CreateNonDirectionEdge(AdjacencyVertex <T> start, AdjacencyVertex <T> end, int weight) { var edges = new List <AdjacencyEdge <T> >(); var edge = new AdjacencyEdge <T>(start, end); edge.Weight = weight; edges.Add(edge); var secondedge = new AdjacencyEdge <T>(end, start); secondedge.Weight = weight; //加边加错了,bug就是这么神奇 //edges.Add(edge); edges.Add(secondedge); return(edges); }
public void AddEdge(AdjacencyEdge <T> edge) { var startVertex = edge.Start; _allEdges.Add(edge); if (startVertex.FirstEdge == null) { startVertex.FirstEdge = edge; } else { var pointerEdge = startVertex.FirstEdge; while (pointerEdge.Next != null) { pointerEdge = pointerEdge.Next; } //竟然这里错了,写了这么多才发现,之前的测试不完备呢。 不是因为拓扑排序都不知道 //pointerEdge=edge; pointerEdge.Next = edge; } }
private void Push(AdjacencyEdge <T> edge) { }