Ejemplo n.º 1
0
        public AdjacencyEdge <T> CreateEdge(AdjacencyVertex <T> start, AdjacencyVertex <T> end, int weight)
        {
            var edge = new AdjacencyEdge <T>(start, end);

            edge.Weight = weight;
            return(edge);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
 private void Push(AdjacencyEdge <T> edge)
 {
 }