数据结构习题精编图文档格式.docx

上传人:b****6 文档编号:20385842 上传时间:2023-01-22 格式:DOCX 页数:37 大小:307.73KB
下载 相关 举报
数据结构习题精编图文档格式.docx_第1页
第1页 / 共37页
数据结构习题精编图文档格式.docx_第2页
第2页 / 共37页
数据结构习题精编图文档格式.docx_第3页
第3页 / 共37页
数据结构习题精编图文档格式.docx_第4页
第4页 / 共37页
数据结构习题精编图文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

数据结构习题精编图文档格式.docx

《数据结构习题精编图文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构习题精编图文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

数据结构习题精编图文档格式.docx

B.一个有向图的邻接表和逆邻接表中的结点个数一定相等。

C.无向图的邻接矩阵一定是对称的,有向图的邻接矩阵一定是不对称的。

D.用邻接矩阵存储图,所占用的存储空间大小只与图中顶点个数有关,而与图的

边数无关。

14.下列关于图的存储的说法中,正确的是

A.有e条边的无向图,在邻接表中有e个结点。

B.有向图中顶点V的度等于其邻接矩阵中第V行中的1的个数。

C.用邻接矩阵法存储一个图所需的存储单元数目与图的边数有关。

D.有n个顶点的无向图,采用邻接矩阵存储表示,图中的边数等于邻接矩阵中

非零元素的个数之和的一半。

15.具有n个顶点、e条边的无向图的邻接矩阵中,零元素的个数为

A.eB.2eC.n2-2eD.n2-1

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

A.n-1个B.n个C.2*(n-1)个D.n*(n-1)/2个

17.若用邻接矩阵表示一个有向图,则其中每一列包含的“1”的个数为

A.图中弧的条数B.图中每个顶点的入度

C.图中每个顶点的出度D.图中强连通分量的数目

18.下面结构中,最适于表示稀疏无向图的是

A.邻接矩阵B.十字链表C.逆邻接表D.邻接多重表

19.如果某图的邻接矩阵是对角线元素均为零的上三角矩阵,则此图是

A.连通图B.强连通图C.有向无环图D.有向完全图

20.下列有关无向图的邻接矩阵的说法中,正确的是

A.矩阵中的非零元素个数等于图中的边数。

B.矩阵中非全零行的行数等于图中的顶点数。

C.第i行和第i列上非零元素的总数等于顶点vi的度数。

D.第i行上的非零元素个数和第i列的非零元素个数一定相等。

21.对于含n个顶点和e条边的图,采用邻接矩阵存储表示的空间复杂度为

A.O(n)B.O(e)C.O(n+e)D.O(n2)

22.设无向图G的邻接表如图1所示,则图G的边数为

图1G的邻接表

A.4B.5C.10D.20

23.若采用邻接表作为存储结构,则图的深度优先搜索类似于二叉树的

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

24.若采用邻接表作为存储结构,则图的广度优先搜索类似于二叉树的

25.设无向图G=(V,E),其中V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),

(b,e),(c,f),(f,d),(e,d)}。

若从顶点a出发按深度优先搜索进行遍历,则可

能得到的顶点序列为

A.abecdfB.acfebdC.aebcfdD.aedfcb

26.设无向图G=(V,E),其中V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),

若从顶点a出发按广度优先搜索进行遍历,则可

A.abcedfB.abcefdC.acfdebD.aebcfd

27.图G的邻接表如图2所示,从顶点V1出发采用深度优先搜索法遍历图G,得到

的顶点序列是

图2图G的邻接表

A.V1V2V3V4V5B.V1V2V3V5V4C.V1V3V4V5V2D.V1V4V3V5V2

28.在图3所示的图G中,从顶点1出发进行深度优先遍历可得到的序列是

图3无向图G

A.1234567B.1246537C.1425367D.1426375

29.下列关于最小生成树的说法中,正确的是

A.任何无向图都存在最小生成树。

B.不同的求最小生成树的方法最后得到的生成树是相同的。

C.连通图上各边权值均不相同,则该图的最小生成树是唯一的。

D.在图G的最小生成树G1中,不可能有某条边的权值超过未选边的权值。

30.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现

的是

A.G中有弧<

Vi,Vj>

B.G中有一条从Vi到Vj的路径

C.G中没有弧<

Vi,Vj>

D.G中有一条从Vj到Vi的路径

31.在用邻接表存储表示图时,拓扑排序算法时间复杂度为

A.O(n)B.O(n+e)C.O(n2)D.O(n3)

32.已知有向图G=(V,A),其中V={V1,V2,V3,V4,V5,V6,V7},

A={<

V1,V2>

,<

V1,V3>

V1,V4>

V2,V5>

V3,V5>

V3,V6>

<

V4,V6>

V5,V7>

V6,V7>

},则G的拓扑序列是

A.V1、V3、V4、V6、V2、V5、V7B.V1、V3、V2、V6、V4、V5、V7

C.V1、V3、V4、V5、V2、V6、V7D.V1、V2、V5、V3、V4、V6、V7

33.下列关于关键路径的说法中,正确的是

A.关键路径是AOE网中从源点到汇点的最短路径。

B.关键路径上某个活动的时间缩短,整个工程的时间也就必定缩短。

C.关键路径上活动的时间延长多少,整个工程的时间也就随之延长多少。

D.当改变网中某一关键路径上任一关键活动后,必将产生不同的关键路径。

34.求最短路径的Dijkstra算法的时间复杂度是

35.求解最短路径的Floyd算法的时间复杂度为

二、填空题

1.设无向图G中顶点数为n,则图G至少有________条边,至多有_________条边;

若G为有向图,则图G至少有________条边,至多有________条边。

2.设无向图G有n个顶点和e条边,每个顶点Vi的度为di(1<

=i<

=n),则e=______。

3.在有n个顶点的有向图中,若要使任意两点间可以互相到达,则至少需要______条弧。

在有n个顶点的有向图中,每个顶点的度最大可达______。

4.一个有n个结点的图,最少有________个连通分量,最多有________个连通分量。

5.n个顶点的连通无向图,其边的条数至少为______。

N个顶点的连通图的生成树含有______条边。

6.图4中的强连通分量的个数为______个。

图4有向图

7.在有向图中,以顶点v为终点的弧的数目称为v的______。

8.图的存储结构表示有____________、____________、十字链表、邻接多重表等多种存储结构。

其中,图的十字链表存储结构只适用于__________图,邻接多重表存储结构只适用于__________图。

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

10.有向图G用邻接矩阵A[n][n]存储,矩阵A的第i行的所有非零元素个数之和等于顶点i的_______。

11.在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是____。

12.一个具有n个顶点e条边的无向图采用邻接表存储,则表头向量大小为______,邻接表中边结点个数为______。

13.在图G的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的______,对于有向图来说等于该顶点的______。

14.n个顶点e条边的图,若采用邻接矩阵存储,则空间复杂度为_________;

若采用邻接表存储,则空间复杂度为_______________。

15.图的深度优先遍历类似于树的______遍历,它所用到的数据结构是_______;

图的广度优先遍历类似于树的__________遍历,它所用到的数据结构是__________。

16.设无向图G=(V,E),其中V={a,b,c,d,e},E={(a,b),(a,d),(a,c),(d,c),(b,e)}。

现用某一种图遍历方法从顶点a开始遍历图,得到的顶点访问序列为abecd,则采用的是__________遍历方法;

若得到的顶点访问序列为abdce,则采用的是__________遍历方法。

17.构造连通网最小生成树的两个典型算法是普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。

一般来说,对稀疏图最好用___________算法求最小生成树,对稠密图最好用______________算法来求解最小生成树。

18.用普里姆(Prim)算法求具有n个顶点e条边的图的最小生成树的时间复杂度为______________,用克鲁斯卡尔(Kruskal)算法的时间复杂度是______________。

19.AOV网中,结点表示______,弧表示______________。

AOE网中,顶点表示______,弧表示______,弧上的权代表__________________。

20.设有向无环图G=(V,A),其中V={a,b,c,d,e,f,g},A={<

a,b>

a,c>

a,d>

b,e>

c,e>

d,e>

e,g>

e,f>

},则该有向无环图可以排出________种不同的拓扑序列。

三、解答题

1.已知有向图G如图5所示,回答下列问题。

(1)给出每个顶点的入度、出度。

(2)给出图G的邻接矩阵表示。

(3)给出图G的邻接表和逆邻接表。

(4)画出图G的各个强连通分量。

图5有向图G

2.设无向图G=(V,E),其中V={v1,v2,v3,v4,v5,v6},E={(v1,v2),(v1,v3),(v1,v5),(v1,v6),(v2,v3),(v2,v4),(v3,v4),(v4,v5),(v4,v6),(v5,v6)}。

(1)画出图G的邻接表。

(2)画出图G的邻接多重表。

(3)根据所画出的邻接表,分别写出从顶点v1出发对图G进行深度优先遍历和广度优先遍历的顶点序列。

3.

(1)对一个图进行遍历可以得到不同的遍历序列,导致得到的遍历序列不唯一的因素有哪些?

(2)已知无向图G的邻接表如图6所示,分别写出从顶点1出发的深度优先遍历和广度优先遍历序列,并画出相应的生成树。

图6无向图G的邻接表

4.设有向图G=(V,A),其中V={v1,v2,…,v9},A={<

v1,v3>

v1,v8>

v2,v3>

v2,v4>

v2,v5>

v3,v9>

v5,v6>

v8,v9>

v9,v7>

v4,v7>

v4,v6>

}。

(1)画出有向图G。

(2)指出图中所有的开始结点和终端结点。

(3)分别对图中的开始结点,给出一个拓扑序列。

并简单说明所给出序列的选定规则。

5.已知无向带权图G的邻接表如图7所示,其中边表结点的结构为(邻接点、权值、链域)。

图7无向带权图G的邻接表

(1)画出无向带权图G。

(2)写出图G的邻接矩阵。

(3)依此邻接表从顶点C出发进行深度优先遍历,画出由此得到的深度优先生成树。

(4)写出遍历过程中得到的从顶点C到其它各顶点的带权路径及其长度。

6.设某连通网N如图8所示,试回答下列问题。

(1)如果每个指针需要4个字节,每个顶点的标识占1个字节,每条边的权值占2个字节。

网N采用哪种存储表示法所需的空间较多?

为什么?

(2)画出以Kruskal算法构造最小生成树的过程。

图8某连通网N

7.已知带权图G如图9所示,试用普里姆(Prim)算法从顶点A开始求最小生成树。

在算法执行之初,顶点的集合U={A},边的集合TE={}。

试按照最小生成树的生成过程,分步给出加入顶点和边以后的集合U和TE的值。

图9带权图G

8.已知有6个顶点(顶点编号为0~5)的有向带权图G,其邻接矩阵A为上三角矩阵,按行序优先保存在如下的一维数组中。

4

6

5

3

(1)写出图G的邻接矩阵A。

(2)画出有向带权图G。

(3)求图G的关键路径,并计算该关键路径的长度。

9.某工程各工序之间的优先关系和各工序所需时间如表1所示。

(1)画出相应的AOE网。

(2)列出各事件的最早发生时间,最迟发生时间。

(3)找出关键路径并指明完成该工程所需最短时间。

表1某工程各工序间的优先关系和各工序所需时间一览表

工序代号

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

所需时间

8

7

10

9

13

19

2

14

前驱工作

-

D,E

F,G

H,L

J,K,M

10.利用Dijkstra算法求图10中从顶点a到其他各顶点间的最短路径,要求利用表格给出求解过程。

图10带权有向图G

四、分析题

1.已知邻接表的头结点和表结点的结构如下:

表结点

头结点

adjvex

nextarc

info

data

firstarc

下面函数的功能是计算采用邻接表存储表示的有向图G中顶点vi的入度。

请在空缺处填入合适的内容,将程序补充完整。

intCountInDegree(ALGraphG,inti)

{

intdegree,j;

ArcNode*p;

degree=0;

for(j=0;

j<

G.vexnum;

j++)

{

p=_______________;

//

(1)

while(_______________)//

(2)

{

if(_______________==i)//(3)

{

degree++;

break;

}

p=_______________;

//(4)

}

}

returndegree;

}

2.已知有向图的邻接表存储表示的类型定义如下:

#defineMAX_VERTEX_NUM20//最大顶点个数

typedefintInfoType;

typedefcharVertexType[5];

//顶点信息是一个最多4个字符的字符串

typedefstructArcNode{

intadjvex;

//该弧所指向的顶点的位置

structArcNode*nextarc;

//指向下一条弧的指针

InfoType*info;

//该弧相关信息的指针

}ArcNode;

typedefstructVNode{

VertexTypedata;

//顶点信息

ArcNode*firstarc;

//指向第一条依附该顶点的弧

}AdjList[MAX_VERTEX_NUM];

typedefstruct{

AdjListvertices;

intvexnum,arcnum;

//图的当前顶点数和弧数

GraphKindkind;

//图的种类标志

}ALGraph;

下面函数的功能是从有向图G中删除所有以顶点v为弧头的弧。

voidDeleteHeadArc(ALGraph&

G,VertexTypev)

inti,j;

ArcNode*p,*q;

for(i=0;

i<

++i)

if(strcmp(v,G.vertices[i].data)==0)

_______________;

//

(1)

if(i==G.vexnum)

cout<

"

所给弧头不存在!

endl;

return;

for(j=0;

G.vexnum;

j++)

//

(2)

while(p&

&

_______________)//(3)

q=p;

p=p->

nextarc;

if(p!

=NULL)

if(_______________)//(4)

q->

nextarc=p->

nextarc;

else

__________=p->

//(5)

deletep;

G.arcnum--;

3.已知图的邻接表表示的类型定义同本大题第2小题。

下面函数的功能是输出图G的深度优先生成树(或森林)的边。

boolvisited[MAX_VERTEX_NUM];

voidDFSTree(ALGraphG,inti)

visited[i]=___________;

p=G.vertices[i].firstarc;

while(p!

=NULL)

if(___________)//

(2)

cout<

G.vertices[i].data<

---"

G.vertices[p->

adjvex].data<

"

;

___________;

//(3)

___________;

//(4)

voidDFSForest(ALGraphG)

inti,cnt=0;

i<

i++)visited[i]=false;

i++)

if(___________)//(5)

cout<

第"

++cnt<

棵树的边有:

DFSTree(G,i);

4.设有向图G采用邻接表表示法,其类型定义同第2小题。

下面函数的的功能是对以邻接表表示的有向图G进行拓扑排序。

(1)阅读函数TopologicalSort,并在空缺处填入合适的内容,将程序补充完整。

voidTopologicalSort(ALGraphG,inttopo[])

inti,j,k,count=0;

intindegree[MAX_VERTEX_NUM];

SqQueueQ;

//Q为队列图11有向图G的邻接表

++i)

indegree[i]=CountInDegree(G,i);

//求各顶点的入度,函数见本大题第1小题

InitQueue(Q);

i++)

if(_____________)EnQueue(Q,i);

//①

while(!

QueueEmpty(Q))

j=GetHead(Q);

DeQueue(Q);

topo[count++]=j;

for(p=G.vertices[j].firstarc;

p;

p=p->

nextarc)

k=_____________;

//②

if(!

(--indegree[k]))____________;

//③

if(_____________)cout<

图G中存在有环路"

//④

(2)对于如图11所示的邻接表,执行函数TopologicalSort,后,数组topo[]的内容是什么?

请将结果填入下面的表格中。

i

1

Topo[i]

5.已知某有向图G采用邻接矩阵存储表示。

图的邻接矩阵表示定义如下:

 #defineMaxMun20//图的最大顶点数

 typedefstruct{

charvexs[MaxNum];

//字符类型的顶点表

intarcs[MaxNum][MaxNum];

//邻接矩阵

intn,e;

//图的顶点数和边(或弧)数

 }MGraph;

//图的邻接矩阵结构描述

图g的定义为:

MGraphg={{'

a'

'

b'

c'

d'

e'

f'

g'

},{{0,1,1,1,0,0,0},{0,0,1,0,1,0,0},

{0,0,0,1,0,0,0},{0,0,0,0,0,0,1},{0,0,1,0,0,1,0},{0,0,0,0,0,0,1},{0,0,0,0,0,0,0}},7,10};

(1)画出该有向图。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1