【PTA】【数据结构与算法】拓扑排序

判断题

1.若图G有环,则G不存在拓扑排序序列。
TF
2.若图G为连通图且不存在拓扑排序序列,则图G必有环。
TF
3.拓扑序一定是唯一的。
TF

选择题

1.对下图进行拓扑排序,可以得到不同的拓扑序列的个数是:

在这里插入图片描述

选项
A4
B 3
C2
D1
2.下图为一个AOV网,其可能的拓扑有序序列为:

在这里插入图片描述

选项
AACBDEF
BABCEFD
CABCDFE
DABCEDF
3.在拓扑排序算法中用堆栈和用队列产生的结果会不同吗?
选项
A是的肯定不同
B肯定是相同的
C有可能会不同
D以上全不对
4.设有向图有n个顶点和e条边,采用邻接表存储,进行拓扑排序时,时间复杂度为()。
选项
AO (nlog2e)
BO ( elog2n)
CO (e*n )
DO (n+e)
5.有拓扑排序的图一定是()。
选项
A无向图
B 有向无环图
C有环图
D强连通图
6.判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以利用()。
选项
A求最短路径的Dijkstra
B求生成树的方法
C深度优先遍历算法
D宽度优先遍历算法
7.下列选项中,不是如下有向图的拓扑序列的是:

fGRE17-7.JPG

选项
A1, 5, 2, 3, 6, 4
B5, 1, 2, 6, 3, 4
C5, 1, 2, 3, 6, 4
D5, 2, 1, 6, 3, 4
8.已知有向图G=(V,E),其中V = {V1,V2,V3,V4,V5,V6,V7},E = {<V1,V2>, <V1,V3>, <V1,V4>, <V2,V5>, <V3,V5>, <V3,V6>, <V4,V6>, <V5,V7>, <V6,V7>},G的拓扑序列是()。
选项
AV1,V2,V5,V3,V4,V6,V7
B V1,V3,V4,V6,V2,V5,V7
CV1,V3,V2,V6,V4,V5,V7
DV1,V3,V4,V5,V2,V6,V7
9.设有图的数据逻辑结构 B=(K,R),其中顶点集 K={k1, k2,…,k9},有向边集 R={<k1,k3>,<k1,k8>,<k2,k3>,<k2,k4>,<k2,k5>,<k3,k9>,<k5,k6>,<k8,k9>,<k9,k7>,<k4,k7>,<k4,k6>}。以下哪个选项不是对应DAG图的拓扑序列?
选项
Ak1,k2,k3,k4,k5,k6,k8,k9,k7
Bk2,k5,k1,k4,k6,k8,k3,k9,k7
Ck2,k4,k5,k6,k7,k1,k3,k8,k9
Dk1,k8,k2,k3,k9,k4,k7,k5,k6
10.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。
选项
AG中有弧
BG中有一条从Vi到Vj的路径
CG中没有弧
DG中有一条从Vj到Vi的路径

程序填空题

1.下列代码的功能是对一个给定的图G执行拓扑排序,其中TopNum[]从1开始记录拓扑序。
void Topsort( Graph G )
{
   Queue Q;
   Vertex V, W;
   NodePtr ptr;
   int counter = 0;

   Q = CreateEmptyQueue(NumVertex);
   for ( V=0; V<G->NumV; V++ )
      if ( Indegree[V] == 0 )
         Enqueue(V, Q);
   while ( !IsEmpty(Q) ){
      V = Dequeue( Q );
      TopNum[V] = ++counter;
      for ( ptr=G->List[V]; ptr; ptr=ptr->Next) {
         W = ptr->Vertex;
         if ( --Indegree[W] == 0 )
            Enqueue(W, Q);
      }
   }
   if ( counter != NumVertex )
      printf("ERROR: Graph has a cycle.\n");
   DisposeQueue(Q);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值