采用邻接矩阵存储结构对有向图进行拓扑排序的算法
发布网友
发布时间:2022-04-25 21:00
我来回答
共1个回答
热心网友
时间:2022-05-05 05:06
lint topsort( ALGraph *G) /*拓扑排序*/
{ int i,j,k,top =-1;
EdgeNode *ptr;
for(i=0;i<G->n;i++) /*入度为0入栈*/
{ if(G->adjlist[i].indegree==0)
{ G->adjlist[i].indegree=top;
top=i; }
}
{if(top==-1) return -1; /*网中有回路*/
j=top;
for(i=0;i<G->n;i++)
{ if(top==-1) return -1;/*AOV网中有回路*/
j=top;
top=G->adjlist[top].indegree; /*从栈中退出一个入度为0的顶点并输出*/
printf("->%s",G->adjlist[j].vertex);
ptr=G->adjlist[j].firstedge;
{ k=ptr->adjvex;
G->adjlist[k].indegree--; /*修改其他顶点的入度*/
if(G->adjlist[k].indegree==0) /*为0入栈*/
while(ptr!=NULL)
{
G->adjlist[k].indegree=top;
top=k;
}
ptr=ptr->next;
}
}
}