public void Remove(Node node) { Nodes.Remove(node); //Set succ/pred of succ/pred nodes foreach (Node predecessor in node.Predecessors) { foreach (Node successor in node.Successors) { predecessor.AddSucc(successor); } } //Remove node from succ/pred lists for (int i = node.Predecessors.Count - 1; i >= 0; i--) { Node predecessor = node.Predecessors[i]; node.RemovePred(predecessor); } for (int i = node.Successors.Count - 1; i >= 0; i--) { Node successor = node.Successors[i]; node.RemoveSucc(successor); } }
public void RemoveSucc(Node node) { if (Successors.Contains(node)) { Successors.Remove(node); node.RemovePred(this); } }