软件设计师
阅读下列说明和C代码,回答问题1至问题2,将解答写在答题纸的对应栏内。【说明】下面的C程序采用深度优先遍历(DFS)来计算图G中的连通分量数。其中图G采用邻接表表示。【C代码】(1)主要变量说明G:图,用邻接表存储visited[]:数组,长度为Max Vnum,visited[i] = 0 表示顶点i未被访问;visited[i] = 1 表示顶点i已经被访问count:图G的连通分量数(2)函数定义#include <stdio.h> #define Max Vnum 100int visited[Max Vnum]={0};/* 顶点节点 */typedef struct ArcNode{          int          adjvex;   /*顶点编号,从0开始*/          struct  ArcNode *nextarc; /*指向下一个邻接点*/}ArcNode;  /* 顶点单链表头节点 */typedef struct {           char      *data;  /*顶点标签,如“v1" */           ArcNode    *firstarc; /*指向第一个邻接点*/}AdjList[Max Vnum];/* 图 */typedef struct {            int vexnum, arcnum; /*图的顶点数和边数*/            AdjList    vertices;     /*图的邻接表*/}AGraph;/* 从顶点v开始深度优先遍历DFS图G */void DFS(AGraph G, int v){      ArcNode *p;      visited[v]= 1;      p = G.vertices[v].firstarc;      while(p != NULL){      if(visited[__(1)___]==0){           DFS(G,p->adjvex);    }           _____(2)_____;         }}/* 计算图G的连通分量数 */ int getNum(AGraph G){       int i, count = 1;        ____(3)____;       for(i = 0; i<G.vexnum;i++){              if(visited[i] ==0){                   ____(4)____;                   DFS(G,i);              }        }    ____(5)____;}
1 / 467
本模块为学员专用
学员专享优势
老师批改作业 做题助教答疑
学员专用题库 高频考点梳理
成为学员