public override ISet <Edge> GetDirectSuccessorEdges(Vertex vertex) { HashSet <Edge> result = new(); foreach (Edge edge in vertex.GetConnectedEdges()) { UndirectedEdge undirectedEdge = (UndirectedEdge)edge; IList <Vertex> connectedVertices = undirectedEdge.ConnectedVertices; bool sourceIsThis = connectedVertices[0].Equals(vertex); bool targetIsThis = connectedVertices[1].Equals(vertex); if (sourceIsThis && targetIsThis) { result.Add(edge); } else { if (sourceIsThis) { result.Add(edge); } if (targetIsThis) { result.Add(edge); } } } return(result); }
/// <inheritdoc/> public override void AddEdge(Edge edge) { if (!(edge is UndirectedEdge)) { throw new InvalidEdgeTypeException($"{nameof(UndirectedGraph)}-objects can only have edges of type {nameof(UndirectedEdge)}"); } UndirectedEdge undirectedEdge = (UndirectedEdge)edge; List <Vertex> connectedVertices = undirectedEdge.ConnectedVertices.ToList(); this.AddCheck(edge, connectedVertices[0], connectedVertices[1]); this._UndirectedEdges.Add((UndirectedEdge)edge); this.OnEdgeAdded(edge); }
public override bool Equals(object obj) { if (!base.Equals(obj)) { return(false); } UndirectedEdge typedObject = (UndirectedEdge)obj; if (!this.ConnectedVertices.NullSafeEnumerableEquals(typedObject.ConnectedVertices)) { return(false); } return(true); }