程序代码:
while(!StackEmpty(&S)) { pop(&S,i); // 这里栈空了未跳出循环 改为: if(!pop(&S, i)) break; printf("(%d)%-12s",i,G.vex[i].cloth); count++; for(p=G.arcs[i];p;p=p->nextarc) { k=p->adj; if(!(--indegree[k])) push(&S,k); } } if(count<G.vexnum) return false; else return true; int FindInDegree(ALGraph G,int indegree[]) /*求入度的函数*/ { int i,j; for(i=0;i<10;++i) indegree[i]=0; for(i=0;i<G.vexnum;++i) for(j=0;j<G.vexnum;++j) if(G.arcs[j][i].adj==1) ++indegree[i]; return indegree[10]; // 这里下标越界 }