/*
*输入pTask为装有Task结构体的数组
*算法存在的Bug 当输入的Task的child数组中存在自己的ID 运行失败
*/
struct Task{
int ID;
int *child; //装有其前驱Task的ID的数组
int child_num;
};
void completeMission(Task *pTask,int Task_num)
{
int i,j;
Task *pt
for( i=0;i<Task_num;i++)
{
if((pTask+i)->child_num==0)
push(stack,*(pTask+i));
}
while(!stack.empty())
{
pt=pop(stack);
doTask(pt->ID);
waitTask();
for(i=0;i<Task_num;i++)
{
int num=(pTask+i)->child_num
for(j=0;j<num;j++)
{
if(*((pTask+i)->child +j)==pt->ID)
{
(pTask+i)->child_num--;
if((pTask+i)->child_num==0) push(stack,*(pTask+i));
}
}
}
}
}