当前位置:首页计算机类软件水平考试初级程序员->试题四(共15分)阅读以下说明和代码,填补代码中空缺,将解答

试题四(共 15 分)阅读以下说明和代码,填补代码中空缺,将解答填入答题纸对应栏内。【说明】 图是很多领域中数据模型,遍历是图一种基本运算。从图中某顶点 v出发进行广度优先遍历过程是:①访问顶点 v;②访问 V 所有未被访问邻接顶点 W1 ,W2 ,..,Wk;③依次从这些邻接顶点 W1 ,W2 ,..,Wk 出发,访问其所有未被访问邻接顶 点;依此类推,直到图中所有访问过顶点邻接顶点都得到访问。显然,上述过程可以访问到从顶点 V 出发且有路径可达所有顶点。对于 从 v 出发不可达顶点 u,可从顶点 u 出发再次重复以上过程,直到图中所有顶 点都被访问到。例如,对于图 4-1 所示有向图 G,从 a 出发进行广度优先遍历,访问顶点 一种顺序为 a、b、c、e、f、d。图 4-1

初级程序员,章节练习,基础复习,初级程序员练习

初级程序员,章节练习,基础复习,初级程序员练习

设图 G 采用数组表示法(即用邻接矩阵 arcs 存储),元素 arcs[i][ j]定义如下:

初级程序员,章节练习,基础复习,初级程序员练习

图 4-1 邻接矩阵如图 4-2 所示,顶点 a~f 对应编号依次为 0~5.因此,访问顶点 a 邻接顶点顺序为 b,c,e。函数 BFSTraverse(Graph G)利用队列实现图 G 广度优先遍历。相关符号和类型定义如下:#define MaxN:50 /*图中最多顶点数*/ typedef int AdjMatrix[MaxN][MaxN];typedef struct{int vexnum,edgenum;/*图中实际顶点数和边(弧)数*/ AdjMatrix arcs; /*邻接矩阵*/)Graph;typedef int QElemType; enum {ERROR=0;OK=l};代码中用到队列运算函数原型如表 4-1 所述,队列类型名为 QUEUE。

表 4-1 实现队列运算函数原型及说明

初级程序员,章节练习,基础复习,初级程序员练习

【代码】int BFSTraverse(Graph G){//图 G 进行广度优先遍历,图采用邻接矩阵存储unsigned char*visited; //visited[]用于存储图 G 中各顶点访问标 志,0 表示未访问int v,w;u;

QUEUEQ Q;∥申请存储顶点访问标志空间,成功时将所申请空间初始化为 0 visited=(char*)calloc(G.vexnum, sizeof(char));If( (1) ) retum ERROR; (2) ; //初始化 Q 为空队列 for( v=0; v<G.vexnum; v++){if(!visited[v]){ //从顶点 v 出发进行广度优先遍历 printf("%d”,v);//访问顶点 v 并将其加入队列 visited[v]=l; (3) ; while(!isEmpty(Q)){ (4) ; //出队列并用 u 表示出队元素 for(v=0;v<G.vexnum; w++){if(G.arcs[u][w]!=0&& (5) ){ //w 是 u 邻接顶点且未访问过printf("%d”,w); //访问顶点 w visited[w]=1;EnQueue(&Q, w);}}}

} free(visited);return OK;)//BFSTraverse从下列 2 道试题(试题五至试题六)中任选 1 道解答。请在答题纸上 指定位置处将所选择试题题号框涂黑。若多涂或者未涂题号框,则对题号最小 一道试题进行评分。

答案:
本题解析:

1、visited==NULL

2、InitQueue(&Q)

3、EnQueue(&Q,v)

4、DeQueue(&Q,&u)

5、visited==0

更新时间:2022-07-28 11:26
纠错

你可能感兴趣的试题

单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.P(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)P(S2)和V(S3)
  • B.P(S1)V(S2)和V(S3)
  • C.V(S1)V(S2)和V(S3)
  • D.P(S1)P(S2)和V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S4)和V(S4)V(S5)
  • B.V(S5)和P(S4)P(S5)
  • C.V(S3)和V(S4)V(S5)
  • D.P(S3)和P(S4)V(P5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S3)和V(S4)V(S5)
  • B.V(S3)和P(S4)P(S5)
  • C.P(S3)和P(S4)P(S5)
  • D.V(S3)和V(S4)V(S5)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.P(S2)和P(S4)
  • B.P(S2)和V(S4)
  • C.V(S2)和P(S4)
  • D.V(S2)和V(S4)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.V(S1)、P(S1)和V(S2)V(S3)
  • B.P(S1)、V (S1)和V(S2)V(S3)
  • C.V(S1)、V(S2)和P(S1)V(S3)
  • D.P(S1)、V(S2)和V(S1)V(S3)
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.序列图
  • B.状态图
  • C.通信图
  • D.活动图
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.合并分叉
  • B.分支
  • C.合并汇合
  • D.流
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.产甲2套,乙3套
  • B.生产甲1套,乙4套
  • C.生产甲3套,乙4套
  • D.生产甲4套,乙2套
查看答案
单选题

高级系统分析师,专项练习,软件水平考试《高级系统分析师》押题

  • A.见图A
  • B.见图B
  • C.见图C
  • D.见图D
查看答案