/* *输入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;ichild_num==0) push(stack,*(pTask+i)); } while(!stack.empty()) { pt=pop(stack); doTask(pt->ID); waitTask(); for(i=0;i child_num for(j=0;j child +j)==pt->ID) { (pTask+i)->child_num--; if((pTask+i)->child_num==0) push(stack,*(pTask+i)); } } } } }