#include "Command.h" void FindOrderCommand::findZeros() { for ( list< list >::const_iterator ptr = graph.getAdjList().begin(); ptr != graph.getAdjList().end(); ++ptr ) { list::const_iterator thisClass = ptr->begin(); if (0 == indegrees[thisClass->getName()]) { Node node = *thisClass; zeros.push(node); } }// for }// findZeros void FindOrderCommand::execute() { findZeros(); while (!zeros.empty()) { order.push(zeros.front()); list< list >::const_iterator ptr = graph.getAdjList().begin(); while (ptr->front().getName() != zeros.front().getName()) { ++ptr; } list::const_iterator zeroClass = ptr->begin(); if (ptr->size() > 1) { ++zeroClass; while (zeroClass != ptr->end()) { list< list >::iterator ptr2 = graph.getAdjList().begin(); while (ptr2->front().getName() != zeroClass->getName()) { ++ptr2; } indegrees[ptr2->front().getName()] -= 1; if (indegrees[ptr2->front().getName()] == 0) { Node node = ptr2->front(); zeros.push(node); }// if ++zeroClass; }// while }// if zeros.pop(); }// while }// findOrder stack FindOrderCommand::getOrder() { return order; }// getOrder