Example #1
0
    public IGraphEdge <T> AddDirectedEdge(IGraphNode <T> n1, IGraphNode <T> n2, float weight = 1)
    {
        Debug.Assert(n1 is AdjListGraphNode <T>);
        Debug.Assert(n2 is AdjListGraphNode <T>);
        AdjListGraphNode <T> node1 = n1 as AdjListGraphNode <T>;
        AdjListGraphNode <T> node2 = n2 as AdjListGraphNode <T>;

        Debug.Assert(nodes.ContainsKey(node1));
        Debug.Assert(nodes.ContainsKey(node2));

        AdjListGraphEdge <T> edge = new AdjListGraphEdge <T>(node1, node2, weight, false);

        edges.Add(edge);
        node1.edges.Add(edge);
        return(edge);
    }
Example #2
0
    public override bool Equals(object obj)
    {
        if (obj is AdjListGraphEdge <T> )
        {
            AdjListGraphEdge <T> edge = obj as AdjListGraphEdge <T>;
            if (node1.Equals(edge.node1) && node2.Equals(edge.node2))
            {
                return(true);
            }
            if (undirected && node1.Equals(edge.node2) && node2.Equals(edge.node1))
            {
                return(true);
            }
        }

        return(false);
    }