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); }
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); }