Функция route о, приведенная далее, выводит на экран найденный маршрут и его длину. // Отображает маршрут и его длину. void Search::route() { stack<FlightInfo> rev; int dist = 0; Flightlnfo f; // Для отображения маршрута меняет порядок стека на противоположный. while(!btStack.emptyO ) { f = btStack.top О; rev.push(f); btStack.pop О; } // Отображает маршрут, while(!rev.empty()) { f = rev.top(); rev.pop() ; cout « f.from « " to "; dist += f.distance; } cout « f.to « endl; cout « "Distance is " « dist « endl; } Обратите внимание на использование второго стека, названного rev. В стеке btstack решение хранится в обратном порядке, вершина стека содержит последний рейс в маршруте, а на дне лежит первый рейс. Следовательно, надо изменить порядок на противоположный для правильного отображения найденного маршрута. Для этого рейсы извлекаются из переменной btstack и помещаются в стек rev.
|