itgle.com

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】对有向图进行拓扑排序的方法是:(1)初始时拓扑序列为空;(2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧;(3)重复(2),直到不存在入度为0的顶点为止(若所有顶点都进入拓扑序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。函数int*TopSort(LinkedDigraph G)的功能是对有向图G中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序

题目

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。

【说明】

对有向图进行拓扑排序的方法是:

(1)初始时拓扑序列为空;

(2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及从该顶点出发的弧;

(3)重复(2),直到不存在入度为0的顶点为止(若所有顶点都进入拓扑序列则完成拓扑排序,否则由于有向图中存在回路无法完成拓扑排序)。

函数int*TopSort(LinkedDigraph G)的功能是对有向图G中的顶点进行拓扑排序,返回拓扑序列中的顶点编号序列,若不能完成拓扑排序,则返回空指针。其中,图G中的顶点从1开始依次编号,顶点序列为vl,v2,…,vn,图G采用邻接表表示,其数据类型定义如下:

define MAXVNUM 50 /*最大顶点数*/

typedef struct ArcNode| /*表结点类型*/

int adjvex; /*邻接顶点编号*/

struct ArcNode*nextarc; /*指示下一个邻接顶点*/

{ArcNode;

typedef struct AdjList{ /*头结点类型*/

char vdata; /*顶点的数据信息*/

ArcNode*firstarc; /*指向邻接表的第一个表结点*/

}AdjList;

typedef struct LinkedDigraph /*图的类型*/

int n: /*图中顶点个数*/

AdjList Vhead[MAXVNUM]; /*所有顶点的头结点数组*/

}LinkedDigraph;

例如,某有向图G如图4-1所示,其邻接表如图4-2所示。

函数TopSort中用到了队列结构(Queue的定义省略),实现队列基本操作的函数原型如下表所示:

【C代码】

int*TopSort(LinkedDigraph G){

ArcNode*P; /*临时指针,指示表结点*/

Queue Q; /*临时队列,保存入度为0的顸点编号*/

int k=0; /*临时变量,用作数组元素的下标*/

int j=0,w=0; /*临时变量,用作顶点编号*/

int*topOrder,*inDegree;

topOrder=(int*)malloc((G.n+1)*sizeof(int));/*存储拓扑序列中的顶点编号*/

inDegree=(int*)malloc((G.n+1)*sizeof(int));/*存储图G中各顶点的入度*/

if(!inDegree||!topOrder) return NULL;

(1); /*构造一个空队列*/

for(j=1;j<=Gn;j++){ /*初始化*/

topOrder[j]=0;inDegree[j]=0;

}

for(j=1;j<=Gn;j++) /*求图G中各顶点的入度*/

for(p=G.Vhead[j].firstarc;p;p=p->nextarc)

inDegree[P->adjvex]+=1;

for(j=i;j<=G.n;J++) /*将图G中入度为0的顶点保存在队列中*/

if(0==inDegree[j]) EnQueue(&Q,j);

while(! IsEmpty(Q)){

(2); /*队头顶点出队列并用w保存该顶点的编号*/

topOrder[k++]=w; /*将顶点W的所有邻接顶点的入度减l(模拟删除顶点w及该顶点出发的弧的操作)*/

for(p=G.Vhead[w].firstarc;p;p=p->nextarc){

(3)-=1;

if(0== (4) ) EnQueue(&Q,P->adjvex);

}/*for*/

}/ * while*/

free(inDegree);

if( (5) )

return NULL;

return topOrder;

}/*TopSort*/

根据以上说明和C代码,填充C代码中的空(1)


相似考题
更多“ 阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】对有向图进行拓扑排序的方法是:(1)初始时拓扑序列为空;(2)任意选择一个入度为0的顶点,将其放入拓扑序列中,同时从图中删除该顶点以及”相关问题
  • 第1题:

    拓扑序列是无环有向图中所有顶点的一个线性序列,图中任意路径中的各个顶点在该图的拓扑序列中保持先后关系。对于图中的有向图, ( ) 不是其的一个拓扑序列。

    A.1526374
    B.1526734
    C.5123764
    D.5126374

    答案:C
    解析:
    拓扑序列是将有向图中所有顶点排成一个线性序列,并且该序列满足:若在图中存在从顶点Vi到Vj的路径,则在该线性序列中,顶点i必然在顶点Vj之前。对有向图进行拓扑排序的方法如下:① 在有向图中选择一个入度为零(没有前驱)的顶点且输出之:② 从有向图中删除该顶点及从该顶点出发的所有弧;③ 重复上述两步,直至图中不存在入度为0的顶点为止。对于图3-4所示的有向图,进行拓扑排序的顶点序列有:5126374、5126734、1526374和1526734。而选项C的"5123764"不是其中的一个拓扑序列。

  • 第2题:

    阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。
    【说明】
    某企业网络拓扑如图1-1所示,A~E是网络设备的编号。










    答案:
    解析:
    【问题1】参考答案:1.B,2.A,3.C 4.D【问题2】5.ethernet 1 6、59.74.221.254【问题3】7) C.deny 8、A 9.F【问题4】10)192.168.4.1
    11)192.168.100.0 12)设置接口的类型是trunk
    【解析】
    【问题1】试题分析:这是一道简单的概念题,考察我们对企业园区网络的基本拓扑结构的了解。通常的企业为了确保内部网络的安全,会设置防火墙,防火墙有3个区域,外网,内网和DMZ区。DMZ通常用于存放各种服务器。因此首先可以选出B这个位置是防火墙,A用于连接Internet,是路由器。DMZ区内部有多台服务器,需要使用交换机连接。【问题3】试题分析:这是网络工程师考试第一次考华为的设备配置,而我们考前准备的都是ios的命令。那这道题是不是很难呢,其实这道题非常简单,只要我们有IOS的命令经验,这道题完全可以自己凭经验做出来,题目出题也是以选择题的形式,因此更加容易,对于没有用过华为设备的考生来说,也是非常简单的。
    【问题4】试题分析:这道题同样是基本的配置,掌握基本命令即可。

  • 第3题:

    14、关于拓扑排序,下列说法正确的是()。

    A.所有连通的有向图都可以实现拓扑排序

    B.对同一个图而言,拓扑排序序列是唯一的

    C.拓扑排序中入度为0的结点总会排在入度大于0的结点的前面

    D.拓扑排序序列中的第一个结点一定是入度等于0的结点

    E.可以用拓扑排序算法来判断有向图中是否存在环

    F.如果有向图的拓扑排序序列是唯一的,则图中必定只有一个顶点的入度为0,一个顶点的出度为0。

    G.在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。

    H.若有向图的拓扑有序序列唯一,则图中每个顶点的入度和出度最多为1。


    拓扑排序序列中的第一个结点一定是入度等于0的结点;可以用拓扑排序算法来判断有向图中是否存在环;如果有向图的拓扑排序序列是唯一的,则图中必定只有一个顶点的入度为0,一个顶点的出度为0。;在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。

  • 第4题:

    阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。
    【说明】
    Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。





    答案:
    解析:
    【问题1】(3分)属于账号策略。 账户策略主要包括密码策略和账户锁定策略两种安全设置。
    【问题 2】(3分)Abcd321 test123! 123@host 密码必须符合复杂性要求:启用此策略,用户账户使用的密码必须符合复杂性的要求。 密码复杂性必须符合下列最低要求: 不能包含用户的账户名; 不能包含用户姓名中超过两个连续字符的部分; 至少有六个字符长; 密码总必须包含一下4类字符中的三类字符: 1、英文大写字母(A-Z) 2、英文小写字母(a-z) 3、10个基本数字(0-9) 4、特殊符号(!@#¥%等)

  • 第5题:

    12、关于拓扑排序,下列说法正确的是()。

    A.所有连通的有向图都可以实现拓扑排序

    B.对同一个图而言,拓扑排序序列是唯一的

    C.拓扑排序中入度为0的结点总会排在入度大于0的结点的前面

    D.拓扑排序序列中的第一个结点一定是入度等于0的结点

    E.可以用拓扑排序算法来判断有向图中是否存在环

    F.如果有向图的拓扑排序序列是唯一的,则图中必定只有一个顶点的入度为0,一个顶点的出度为0。

    G.在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。

    H.若有向图的拓扑有序序列唯一,则图中每个顶点的入度和出度最多为1。


    拓扑排序序列中的第一个结点一定是入度等于0的结点;可以用拓扑排序算法来判断有向图中是否存在环;如果有向图的拓扑排序序列是唯一的,则图中必定只有一个顶点的入度为0,一个顶点的出度为0。;在拓扑排序算法中,为暂存入度为零的顶点可以使用栈,也可以使用队列。