一.有向无环图(DAG图)
二.拓扑排序(AOV网,顶点表示活动)
- 由集合上的一个偏序得到集合上的一个全序的操作叫拓扑排序
- 在有向无环图中判断工程是否能完成
1.说明
- 采用了邻接表存储树结构
- 运用了栈来存储所有入度为0的元素下标,在出栈时将他们输出并遍历减少所有与他们相连的点的入度
2.代码
void topologicalsort(Graph*g)
{
int*count=(int *)malloc(sizeof(int)*g->numv);
for(int i=0;i<g->numv;i++)
{
count[i]=0;
}
Edge*p;
for(int i=0;i<g->numv;i++)
{
p=g->NodeTable[i].adj;
if(p!=NULL)
{
count[p->dest]++;
p=p->link;
}
}
int top=-1;
for(int i=0;i<g->numv;i++)
{
if(count[i]==0)
{
count[i]=top;
top=i;
}
}
int v,w;
for(int i=0;i<g->numv;i++)
{
if(top==-1)
{
printf("网络中有回路\n");
return;
}
else
{
v=top;
top=count[top