public void Remove(HalfEdge halfEdge) { HalfEdge previous; var removalBucket = Bucket(halfEdge); if (halfEdge.Vertex == null) { return; } previous = hash[removalBucket]; while (previous.NextInPriorityQueue != halfEdge) { previous = previous.NextInPriorityQueue; } previous.NextInPriorityQueue = halfEdge.NextInPriorityQueue; count--; halfEdge.Vertex = null; halfEdge.NextInPriorityQueue = null; halfEdge.Dispose(); }
public void Remove(HalfEdge halfEdge) { HalfEdge previous; var removalBucket = Bucket(halfEdge); if (halfEdge.Vertex == null) return; previous = hash[removalBucket]; while (previous.NextInPriorityQueue != halfEdge) { previous = previous.NextInPriorityQueue; } previous.NextInPriorityQueue = halfEdge.NextInPriorityQueue; count--; halfEdge.Vertex = null; halfEdge.NextInPriorityQueue = null; halfEdge.Dispose(); }