1: // Created by Frank M. Carrano and Tim Henry.
2: // Copyright (c) 2013 __Pearson Education__. All rights reserved.
4: /** Tests whether a sequence of flights exists between two cities.
5: @pre originCity and destinationCity both exist in the flight map.
6: @post Cities visited during the search are marked as visited
7: in the flight map.
8: @param originCity The origin city.
9: @param destinationCity The destination city.
10: @return True if a sequence of flights exists from originCity
11: to destinationCity; otherwise returns false. */
12: bool Map::isPath(City originCity, City destinationCity)
13: {
14: bool result, done;
15: // Mark the current city as visited
16:
17: markVisited(originCity);
18: // Base case: the destination is reached
19: if (originCity == destinationCity)
20: result = true;
21: else // Try a flight to each unvisited city
22: {
23: done = false;
24: City nextCity = getNextCity(originCity);
25: while (!done && (nextCity != NO_CITY))
26: {
27: done = isPath(nextCity, destinationCity);
28: if (!done)
29: nextCity = getNextCity(originCity);
30: } // end while
31:
32: result = done;
33: } // end if
34:
35: return result;
36: } // end isPath