4、用一维数组G[ ]存储有4个顶点的无向图如下: G[ ] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 } 则顶点2和顶点0之间是有边的。

4、用一维数组G[ ]存储有4个顶点的无向图如下: G[ ] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 } 则顶点2和顶点0之间是有边的。


参考答案和解析

相关考题:

已知图的邻接矩阵,根据算法,则从顶点0出发,按深度优先遍历的结点序列是( ) A0 2 4 3 1 5 6B0 1 3 5 6 4 2C0 4 2 3 1 6 5D0 1 3 4 2 5 6

有n个顶点的无向图的边数最少为()。A、0B、1C、n-1D、n

用一维数组G[]存储有4个顶点的无向图如下:G={0,1,0,1,1,0,0,0,1,0},则顶点2和顶点0之间是有边的。() 此题为判断题(对,错)。

阅读下列说明和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)

设无向图的顶点数为n,则该图最多有()条边。A.n-1B.n(n-1)/2C.n(n+1)/2D.0

●设一个包含N 个顶点、E 条边的简单无向图采用邻接矩阵存储结构(矩阵元素 A[i][j]等于1/0 分别表示顶点i与顶点 j 之间有/无边),则该矩阵中的非零元素数目为 (60)。(60)A.NB.EC.2ED.N+E

采用邻接链表存储时,顶点0的表结点个数为2,顶点3的表结点个数为0,顶点1的表结点个数为()。A.0B.1C.2D.3

若定义static int a[2][2]={1,2,3,4},则a数组的各数组元素分别为______。A.a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4B.a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4C.a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1D.a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1

若有数组声明 a[0..3,0..2,1..4],设编译时为 a 分配的存储空间首地址为base_a,且每个数组元素占据一个存储单元。当元素以行为序存放(即按 a[0,0,1],a[0,0,2],a[0,0,3],a[0,0,4],a[0,1,1],a[0,1,2],…,a[3,2,4]顺序存储),则数组元素a[2,2,2]在其存储空间中相对base_a的偏移量是 (55) 。A.8B.12C.33D.48

2 2 .存储器容量l G 、1 M 、1 K 分别表示2 的( ) 次方字节。A .1 0 、2 0 、3 0B .3 0 、2 0 、1 0C .2 0 、3 0 、1 0D .3 0 、1 0 、2 0

若有数组声明a[0..3,0..2,1..4],设编译时为a分配的存储空间首地址为base_a。且每个数组元素占据一个存储单元。当元素以行为序存放(即按a(0,0,1),a[0,0,2],a[0,0,3],a[0,0,4],a[0,1, 1),a[0,1,2],……,a[3,2,4]顺序存储),则数组元素a[3,1,3]在其存储空间中相对base_a的偏移量是(60)。A.23B.24C.42D.43

阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 图是很多领域中的数据模型,遍历是图的一种基本运算。从图中某顶点v出发进行广度优先遍历的过程是: ①访问顶点v; ②访问V的所有未被访问的邻接顶点W1 ,W2 ,..,Wk; ③依次从这些邻接顶点W1 ,W2 ,..,Wk出发,访问其所有未被访问的邻接顶点;依此类推,直到图中所有访问过的顶点的邻接顶点都得到访问。 显然,上述过程可以访问到从顶点V出发且有路径可达的所有顶点。对于从v出发不可达的顶点u,可从顶点u出发再次重复以上过程,直到图中所有顶点都被访问到。 例如,对于图4-1所示的有向图G,从a出发进行广度优先遍历,访问顶点的一种顺序为a、b、c、e、f、d。设图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=1}; 代码中用到的队列运算的函数原型如表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; vG.vexnum; v++){ if(!visited[v]){ //从顶点v出发进行广度优先遍历 printf(%d,v); //访问顶点v并将其加入队列 visited[v]=1; (3) ; while(!isEmpty(Q)){ (4) ; //出队列并用u表示出队的元素 for(w=0;vG.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

如果一个有向图(25),则是一棵有向树。A.恰有一个顶点的人度为0,其余顶点的人度为1B.恰有一个顶点的人度为1,其余顶点的人度为0C.恰有一个顶点的人度为1,其余顶点的人度为2D.恰有一个顶点的人度为1,其余顶点的度大于1

阅读下列函数说明和c代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】函数int Toplogical(Linded WDipaph G)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中图G表示一个具有n个顶点的AOE-网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下:typedefstruct Gnode{ /* 邻接表的表结点类型*/iht adjvex; /* 邻接顶点编号*/iht weight; /* 弧上的权值*/street Gnode *nextarc; /* 指示下一个弧的结点*/}Gnode;typedef struct Adjlist{ /* 邻接表的头结点类型*/char vdata; /*顶点的数据信息*/struct Gnode *Firstadj; /* 指向邻接表的第一个表结点*/}Adjlist;typedef street LinkedWDigraph{ /* 图的类型*/int n, e; /* 图中顶点个数和边数*/struct Adjlist *head; /*指向图中第一个顶点的邻接表的头结点 */} LinkedWDigraph;例如,某AOE-网如图5-1所示,其邻接表存储结构如图5-2所示。【函数】iht Toplogical(LinkedWDigraph G){ Gnode *p;intj, w, top = 0;iht *Stack, *ye, *indegree;ye = (int *)malloe((G.n+1) * sizeof(int));indegree = (int *)malloc((G.n+1)*sizeof(int)); /* 存储网中各顶点的入度*/Stack = (int *)malloe((G.n+1)*sizeof(int)); /* 存储入度为0的顶点的编号*/if(!ve||!indegree || !Stack) exit(0);for (j = 1;j <= G.n;j++) {ve[j] = 0; indegree[j]= 0;}/*for*/for(j= 1;j=G.n;j++) { /* 求网中各顶点的入度*/p = G.head[j].Firstadj;while (p) {(1); p = p→nextarc;}/*while*/}/*for*/for (j = 1; j <= G.n; j++) /*求网中入度为0的顶点并保存其编号*/if (!indegree[j]) Stack[++top] =j;while (top > 0) {w=(2);printf("%e ", G.head[w].vdata);p = G.head[w].Firstadj;while (p) {(3);if ( !indegree [p→adjvex])Staek[++top] = p→adjvex;if( (4))ve[p→adjvex] = ve[w] + p→weight;p = p→nextarc;}/* while */}/* while */ return (5); }/*Toplogieal*/

设L是以O(0,0),A(1,0),B(0,1)为顶点的三角形的边界,

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

对于下面的有向图,其邻接矩阵是一个(41)的矩阵, 采用邻接链表存储时,顶点0的表结点个数为 2,顶点3的表结点个数为0,顶点1的表结点个数为(42)。 A.0B.1C.2D.3

阅读下列说明和C代码,回答问题1至问题2,将解答写在答题纸的对应栏内。【说明】一个无向连通图G点上的哈密尔顿(Hamiltion)回路是指从图G上的某个顶点出发,经过图上所有其他顶点一次且仅一次,最后回到该顶点的路径。哈密尔顿回路算法的基础如下:假设图G存在一个从顶点V0出发的哈密尔顿回路V1--V2--V3--...--Vn-1--V0。算法从顶点V0出发,访问该顶点的一个未被访问的邻接顶点V1,接着从顶点V1出发,访问V1一个未被访问的邻接顶点V2,..。;对顶点Vi,重复进行以下操作:访问Vi的一个未被访问的邻接接点Vi+1;若Vi的所有邻接顶点均已被访问,则返回到顶点Vi-1,考虑Vi-1的下一个未被访问的邻接顶点,仍记为Vi;直到找到一条哈密尔顿回路或者找不到哈密尔顿回路,算法结束。【C代码】下面是算法的C语言实现。(1)常量和变量说明n :图G中的顶点数c[][]:图G的邻接矩阵K:统计变量,当前已经访问的顶点数为k+1x[k]:第k个访问的顶点编号,从0开始Visited[x[k]]:第k个顶点的访问标志,0表示未访问,1表示已访问(2)C程序#include #include #define MAX 100voidHamilton(intn,int x[MAX,intc[MAX][MAX]){int;int visited[MAX];int k;/*初始化 x 数组和 visited 数组*/for (i=0:i=0){x[k]=x[k]+1;while(x[k]【问题1】(10分)根据题干说明。填充C代码中的空(1)~(5)。【问题2】(5分)根据题干说明和C代码,算法采用的设计策略为( ),该方法在遍历图的顶点时,采用的是( )方法(深度优先或广度优先)。

对于下面的有向图,其邻接矩阵是一个(41)的矩阵, 采用邻接链表存储时,顶点0的表结点个数为 2,顶点3的表结点个数为0,顶点1的表结点个数为(42)。 A.3X4B.4X3C.6X6D.7X7

图G的邻接矩阵如下图所示(顶点依次表示为v0、v1、v2、v3、v4、v5),G是( )。对G进行广度优先遍历(从v0开始),可能的遍历序列为(请作答此空)。A.v0、v1、v2、v3、v4、v5B.v0、v2、v4、 v5、v1、v3C.v0、v1、v3、v5、v2、v4D.v0、v2、v4、v3、v5、v1

图G的邻接矩阵如下图所示(顶点依次表示为v0、v1、v2、v3、v4、v5),G是(请作答此空)。对G进行广度优先遍历(从v0开始),可能的遍历序列为( )。A.无向图B.有向图C.完全图D.强连通图

阅读下列说明和?C?代码,回答问题?1?至问题?2,将解答写在答题纸的对应栏内。【说明】一个无向连通图?G?点上的哈密尔顿(Hamiltion)回路是指从图?G?上的某个顶点出发,经过图上所有其他顶点一次且仅一次,最后回到该顶点的路劲。一种求解无向图上哈密尔顿回路算法的基础私下如下:假设图?G?存在一个从顶点?V0?出发的哈密尔顿回路?V1——V2——V3——...——Vn-1——V0。算法从顶点?V0?出发,访问该顶点的一个未被访问的邻接顶点?V1,接着从顶点?V1?出发,访问?V1?一个未被访问的邻接顶点?V2,..。;对顶点?Vi,重复进行以下操作:访问?Vi?的一个未被访问的邻接接点?Vi+1;若?Vi?的所有邻接顶点均已被访问,则返回到顶点?Vi-1,考虑Vi-1?的下一个未被访问的邻接顶点,仍记为?Vi;知道找到一条哈密尔顿回路或者找不到哈密尔顿回路,算法结束。【C?代码】下面是算法的?C?语言实现。(1)常量和变量说明n :图?G?中的顶点数c[][]:图?G?的邻接矩阵K:统计变量,当期已经访问的定点数为?k+1x[k]:第?k?个访问的顶点编号,从?0?开始Visited[x[k]]:第?k?个顶点的访问标志,0?表示未访问,1?表示已访问⑵C?程序【问题?1】(10?分)根据题干说明。填充?C?代码中的空(1)~(5)。【问题?2】(5?分)根据题干说明和?C?代码,算法采用的设计策略为( ),该方法在遍历图的顶点时,采用的是(?)方法(深度优先或广度优先)。

定义:int a[2][2];则数组a在内存中的存放顺序为()A、a[0][0]、a[1][0]、a[0][1]、a[1][1]B、a[0][0]、a[0][1]、a[1][0]、a[1][1]C、a[0][0]、a[1][1]、a[0][1]、a[1][0]D、a[0][0]、a[1][1]、a[1][0]、a[0][1]

对Ⅲ期骨肿瘤的描述正确的是()A、G1-2T1N0-2M0B、G1-2T1-2N0M1C、G3T3N0M0D、G1T1N0M0E、G2T1-2N0M0

设用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()A、第i行非0元素的个数之和B、第i列非0元素的个数之和C、第i行0元素的个数之和D、第i列0元素的个数之和

骨巨细胞瘤外科分级属于()A、G0T1-2M0-1B、G0-1T0M0C、G0-1T0-2M0-1D、G2T0M1E、G2T0M0

填空题假定一个有向图的顶点集为{a,b,c,d,e,f},边集为{, , , , , },则出度为0的顶点个数为(),入度为1的顶点个数为()

单选题一个有n个顶点的无向连通图,它所包含的连通分量个数为()。A0B1CnDn+1