Push(S,j); int count=0; while(!Empty(S)) { Pop(S,j); Push(T,j); count++; for(p=G.vertices[j].first;p;p=p->next) { k=p->adjvex; ID[k]--; if(ID[k]==0) Push(S,k); if( ( ve[j] + (p->info2) ) > ve[k] ) ve[k]=ve[j]+(p->info2); } } if(count Status Critial(ALGraph G) { int i,j,k,ee,el; int vl[MAX]; Stack T; InitStack(T); ArcNode * p; if(!Topo(G,T)) return ERROR; for(i=0;i printf(\关键顶点为a:\); for(j=0;j printf(\); printf(\关键路径为a:\); for(j=0;j { for(p=G.vertices[j].first;p;p=p->next) { 16 k=p->adjvex; ee=ve[j]; el=vl[k]-(p->info2); if(el==ee) printf(\,p->info1); } } printf(\); return OK; } int main() { ALGraph G; Init(G); CreateGraphic(G); Critial(G); return 0; } 17
数据结构课程设计 - 关键路径



