Программирование >>  Формирование пользовательского контейнера 

1 ... 91 92 93 [ 94 ] 95 96 97 ... 156


public:

Помещает рейсы в базу данных.

void addflight(string from, string to, int dist) { flights .pushbaclc(Flightlnfo(from, to, dist)) ;

Показывает маршрут и общую длину, void route();

Определяет, есть ли маршрут между from и to. void findroute(string from, string to);

Возвращает true, если маршрут был найден, bool routefoundO {

return btStaclc. size О != 0;

Возвращает рейс из вершины стека. Flightlnfo getTOSO { return btStaclc. top () ;

Переустанавливает все поля skip, void resetAllSkipO ;

Удаляет рейс. ,

void remove(Flightlnfo f);

Показывает маршрут и его длину.

void Search::route()

stack<Fl ight Info rev; int dist = 0; Flightlnfo f;

Меняет порядок стека на противоположный для отображения маршрута.



while (! btstack. enpty ()) { f = btStack.topO ; rev.push(f); btStack.popO ;

Отображает маршрут, while (! rev. enpty О ) {

f = rev.topO;

rev.popO ;

cout f.from to ; dist += f.distance;

cout f.to endl;

cout Distance is dist endl;

Если есть рейс между from и to,

запоминает расстояние б dist.

Возвращает true, если рейс существует,

и false - в противном случае.

bool Search: :match(string from, string to, int &dist) {

for(unsigned i=0; i < flights.sizeO; i++) { if(flights[i].from == from &&

flights[i].to == to && !flights[i].skip)

flights[i].skip = true; предотвращает повторное использование dist = flights[i].distance; return true;

return false; не найден

Ч Для заданного from находит любой рейс. Ч Возвращает true, если рейс найден.



return false;

Определяет, есть ли маршрут между from и to. void Search::findroute(string from, string to) {

int dist; Flightlnfo f;

Проверяет, не достигнута ли цель, if(match(from, to, dist)) {

btStack.push(FlightInfo(from, to, dist)); .

return;

Пробует другой рейс, if(find(frbm, f)) {

btStack.push(FlightInfo(from, to. f.distance));

findroute(f.to. to);

else if (!btStack.enptyO ) {

Возвращается на шаг назад и пробует другой рейс.

f = btStack.top();

btStack.popO ;

findroute(f.from, f.to);

и false - в противном случае.

bool Search: :find(string from, Flightlnfo Set)

for(unsigned i=0; i < flights.sizeO; i++) {

if(flights[i].from == from && !flights[i].skip) { f = flights[i];

flights[i].skip = true; предотвращает повторное использование return true;



1 ... 91 92 93 [ 94 ] 95 96 97 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика