/* * RemoveArc removes from the graph an arc between two nodes. */ public void RemoveArc(Node node1, Node node2) { //System.Console.WriteLine("\nIn RemoveArc()"); if (!ContainsArc(node1.Name + "<-->" + node2.Name)) { System.Console.WriteLine("Arc not found in list of arcs; Nothing done"); //System.Console.WriteLine("Leaving RemoveArc()\n"); return; } // Remove actual connection between nodes if (node1.NodeConnectedViaNorthArcOption.Equals(node2)) { node1.ResetSpecifiedArcOptionToDefault("north"); node2.ResetSpecifiedArcOptionToDefault("south"); } else if (node1.NodeConnectedViaEastArcOption.Equals(node2)) { node1.ResetSpecifiedArcOptionToDefault("east"); node2.ResetSpecifiedArcOptionToDefault("west"); } else if (node1.NodeConnectedViaSouthArcOption.Equals(node2)) { node1.ResetSpecifiedArcOptionToDefault("south"); node2.ResetSpecifiedArcOptionToDefault("north"); } else if (node1.NodeConnectedViaWestArcOption.Equals(node2)) { node1.ResetSpecifiedArcOptionToDefault("west"); node2.ResetSpecifiedArcOptionToDefault("east"); } else { System.Console.WriteLine("Error; Connection between nodes not found"); //System.Console.WriteLine("Leaving RemoveArc()\n"); return; } // Remove arc from set string arcName1 = node1.Name + "<-->" + node2.Name; string arcName2 = node2.Name + "<-->" + node1.Name; System.Console.WriteLine("Looking for arc in set by name of " + arcName1 + " or " + arcName2); foreach (Arc arc in _arcs) { if (arc.Name.Equals(arcName1) || arc.Name.Equals(arcName2)) { System.Console.WriteLine("Arc " + arc.Name + " found in list of arcs and being removed"); _arcs.Remove(arc); break; // The list of arc has shrunk by one. If the foreach is not broken it will // eventually attempt to access one more than the list's current size. } } //System.Console.WriteLine("Leaving RemoveArc()\n"); }