数据库大神来啊、给出下列AOV网的可能的拓扑排序序列。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库大神来啊、给出下列AOV网的可能的拓扑排序序列。相关的知识,希望对你有一定的参考价值。

拓扑排序序列是否唯一?在什么情况下拓扑排序无法完成。

谢谢了啊!!!

参考技术A 针对该题,可能的拓扑排序:
1.C->D->B->A->E
2.D->B->C->A->E
3.D->C->B->A->E

当然,拓扑序列不一定唯一
如果图中,这里是AOV网中存在有向环,则无法完成拓扑排序。本回答被提问者采纳

如何用C++语言实现AOV网的所有拓扑排序?(最好能实现动态演示)

实现演示很麻烦,好像要用MFC吧?

参考技术A #define max 图的顶点数
//弧节点的结构
typedef struct EdgeNode

int adjvex;
struct EdgeNode *next;
;
//顶点节点的结构
typedef struct Vnode

VertexType vertex;//顶点数据类型
EdgeNode *link;
Adjlist[max];
//拓扑排序算法描述
void topsort(Adjlist g)
//假设G有n个顶点、e条边的有向图,g是他的邻接表,每个节点设两个
//域vex,next,对入度为0的顶点设计带链的栈,top指示栈的指针,in为入度

readlist();//输入e条弧并建立邻接表
top=0;
for(i=1;i<=n;i++)//查入度为0的顶点,并建立链栈
if(g[i].in==0)

g[i].in=top;
top=i;

m=0;//设m为计数器计算输出的顶点个数
while(top!=0)

j=top;
top=g[top].in;//退栈
printf("%d",j);
m++;//输出顶点并计数
q=g[j].link;//q是指针,指示以j为尾的弧
while(q!=NULL)

k=q->vex;//顶点k为j的直接后继
g[k].in=g[k].in-1;//入度减1
if(g[k].in==0)

g[k].in=top;
top=k;//入度为0的顶点进栈

q=p->next;


if(m<n)
printf("the network have cycle");//输出顶点数不足n,说明网中无环

以上是关于数据库大神来啊、给出下列AOV网的可能的拓扑排序序列。的主要内容,如果未能解决你的问题,请参考以下文章

如何用C++语言实现AOV网的所有拓扑排序?(最好能实现动态演示)

拓扑序列以及排序

数据结构 AOV网的关键路径(Swift面向对象版)

复习--拓扑排序

拓扑排序

逆拓扑排序实现思想以及通过DFS算法实现逆拓扑排序(C语言)