问答题(2000年清华大学)

对于一个有向图,不用拓扑排序,如何判断图中是否存在环?

答案解析

对有向图进行深度优先遍历。如果从有向图上某个顶点 v 出发的遍历,在 dfs ( v )结束之前出现一条从顶点u到顶点v的回边,由于u在生成树上是v的子孙,则有向图中必定存在包含顶点 v 和顶点u的环。除了数据结构书上给出...

查看完整答案

讨论

对于下图,从顶点1进行深度优先遍历时,不可能得到的遍历序列是【 】

写出和下列递归过程等价的非递归过程。void test(int sum){     int a;     scanf("%d",&a);     if(a==0) sum=1;     else{         test(sum);         sum=sum*a;     }     pritf("%d",sum); }

用单链表表示的链式队列的队头在链表的【 】位置。

线性表是具有n个【 】的有限序列。

如果待排序序列中两个数据元素具有相同的值,在排序前后它们的位置发生颠倒,则称该排序算法是不稳定的,【 】就是不稳定的排序算法。

快速排序的最大递归深度是__________,最小递归深度是__________。

回答问题并写出推导过程:对50个整数进行快速排序需进行关键字间比较次数可能达到的最大值和最小值各为多少?

如果只想得到1000个元素组成的序列中第5个最小元素之前的部分排序序列,用【 】方法最快

在分析二叉查找树性能时常加入失败结点,即外结点,从而形成扩充的二叉树。若设失败结点i所在层次为li,那么查找失败到达失败结点时所做的数据比较次数是多少?

设有12个数据{25,40,33,47,12,66,72,87,94,22,5,58},它们存储在散列表中,利用双散列解决冲突,要求插入新数据的平均查找次数不超过3次。① 该散列表的大小m应该设计多大?② 试为该散列表设计相应的散列函数(用除留余数法)并计算寻找下一个“空位”时向前跨步步长的再散列函数。③ 顺次将各个数据散列到表中。④ 计算查找成功的平均查找次数。

已知有向图G采用邻接矩阵存储,其定义如下:typedef struct{//图的定义 int numberVertices,numEgges;//图中实际的顶点数和边数 char verticesList[maxV];//顶点表 int edge[maxV][maxV];//邻接矩阵}MGraph;将图中出度大于入度的顶点称为K顶点,如图,a和b都是K顶点,设计算法 int printVertices(MGraph G)对给定任意非空有向图G,输出G中所有K顶点,并返回K顶点的个数。(1)给出算法的设计思想。(2)根据算法思想,写出C/C++描述,并注释。

如果G是一个具有n个顶点的连通无向图,那么G最多有__________条边,最少有__________条边。

已知无向连通图 G 中各边的权值均为 1,下列算法中一定能够求出图 G 中从某顶点到其余各个顶点最短路径的是【 】Ⅰ.普利姆算法;Ⅱ.克鲁斯卡尔算法;Ⅲ.图的广度优先搜索

一个具有n个结点的弱连通图至少有__________条边。

对于一个具有n个结点的连通无向图,如果它有且只有一个简单回路,那么此图有__________条边。

在一个有n个顶点的无向网中,有O(n1.5*log2n)条边,则应该选用【 】算法来求这个网的最小生成树,从而使计算时间较少。

在下列两种求图的最小生成树的算法中,【 】算法适合于求边稀疏的网的最小生成树。

Kruskal算法的时间复杂度为__________,它对__________图比较合适。

n个顶点的连通图用邻接矩阵表示时,该矩阵至少有__________个非零元素。

试列中下列图中全部可能的拓扑排序序列。