大数据结构单元8练习参考问题详解.docx

上传人:b****3 文档编号:26473567 上传时间:2023-06-19 格式:DOCX 页数:20 大小:204.39KB
下载 相关 举报
大数据结构单元8练习参考问题详解.docx_第1页
第1页 / 共20页
大数据结构单元8练习参考问题详解.docx_第2页
第2页 / 共20页
大数据结构单元8练习参考问题详解.docx_第3页
第3页 / 共20页
大数据结构单元8练习参考问题详解.docx_第4页
第4页 / 共20页
大数据结构单元8练习参考问题详解.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

大数据结构单元8练习参考问题详解.docx

《大数据结构单元8练习参考问题详解.docx》由会员分享,可在线阅读,更多相关《大数据结构单元8练习参考问题详解.docx(20页珍藏版)》请在冰豆网上搜索。

大数据结构单元8练习参考问题详解.docx

大数据结构单元8练习参考问题详解

单元练习8

一・判断题(下列各题,正确的请在前面的括号打7;错误的打X)

(V)(l)图可以没有边,但不能没有顶点。

(X)

(2)在无向图中,(Vi,V2)与(V2,V1)是两条不同的边。

(X)(3)令B接表只能用于有向图的存储。

3)(4)—个图的邻接矩阵表示是唯一的。

(X)(5)用邻接矩阵法存储一个图时,所占用的存储空间大小与图中顶点个数无关,而只与图的边数有关。

(X)(6)有向图不能逬行广度优先遍历。

(")(7)若一个无向图的以顶点Vi为起点逬行深度优先遍历,所得的遍历序列唯一,则可以唯一确走该图。

(V)(8)存储无向图的邻接矩阵是对称的,因此只要存储邻接矩阵的上三角(或下三角)部分就可以了。

(X)(9)用邻接表法存储图时,占用的存储空间大小只与图中的边数有关,而与结点的个数无关。

(V)(10)若一个无向图中任一顶点出发,逬行一次深度优先遍历,就可以访问图中所有的顶点,则该图一走是连通的。

二•填空题

(1)图常用的存储方式有令腹矩阵和邻接表等。

(2)图的遍历有:

深度优先搜和广度优先搜等方法。

(3)有n条边的无向图邻接矩阵中,1的个数是_2n—°

(4)有向图的边也称为_弧—。

(5)图的邻接矩阵表示法是表示一之间相邻关系的矩阵。

(6)有向图G用邻接矩阵存储,其第i行的所有元素之和等于顶点i的—出度—。

(7)n个顶点e条边的图若采用邻接矩阵存储,则空间复杂度为:

0(")。

(8)n个顶点e条边的图若采用邻接表存储,则空间复杂度为:

O(n+e)。

(9)设有一稀疏图G,则G采用_邻接表—存储比较节省空间。

(10)设有一稠密图G”则G采用—邻接矩阵一存储比较节省空间.

(11)图的逆邻接表存储结构只适用于—有向—图。

(12)n个顶点的完全无向图有n(n-l)/2_条边。

(13)有向图的邻接表表示适于求顶点的出度°

(14)有向图的邻接矩阵表示中,第i列上非0元素的个数为顶点V,的入度。

(15)对于具有n个顶点的图,其生成树有且仅有n-1条边。

(16)对n个顶点,e条弧的有向图,其邻接表表示中,需要n+e个结点。

(17)从图中某一顶点出发,访遍图中其余顶点,且使每一顶点仅被访问一次,称这一过程为图的遍历。

(18)无向图的邻接矩阵一走是对称矩阵。

(19)_个连通网的最小生成树是该图所有生成树中权最小的生成树。

(20)若要求一个稠密图G的最小生成树.最好用Prim算法来求解。

三■选择题

(1)在一个图中,所有顶点的度数之和等于图的边数的(C)倍。

A・1/2

B.1

C.2

D・4

(2)在一个有向图中

所有顶点的入度之和等于所有顶点的出度之和的(

B)倍。

A・1/2

B.1

C・2

D.4

(3)对于一个具有n个顶点的有向图的边数最多有(

B)。

A・n

B・n(n-1)

C.n(n-l)/2

D.2n

(4)在一个具有n个顶点的无向图中,要连通全部顶点至少需要(C

)条边。

A・n

B・n+1

C・n-1

D.n/2

(5)有8个结点的有向元全图有(C)条边。

A・14

B.28

C.56

D.112

(6)深度优先遍历类似于二叉树的(A)。

A■先序遍历

B・中序遍丿力

c・后序遍历

D.层次遍历

(7)广度优先遍历类似于二叉树的(D)。

A・先序遍历

B・中序遍丿力

c・后序遍历

D.层次遍历

(8)任]可一个无向连通图的最小生成树(A)o

A■只有一棵

B.—棵或多棵

C・一定有多棵

D■可能不存在

D.n行任意列

(11)对于一个具有n个顶点和e条边的无向图,采用邻接表表示,则表头向星大小为(C

A.n-1B.n+1C.nD.n+e

(12)在图的表示法中,表示形式唯一的是(A)。

A.邻接矩阵表示法B.邻接表表示法

C.逆邻接表表示法D.邻接表和逆邻接表表示法

(13)在一个具有n个顶点e条边的图中,所有顶点的度数之和等于(C)。

A・nB・eC・2nD・2e

(14)下列图中r度为3的结点是(BX

A・VlB.V2

C.V3

D.V4

A・连通图

B.强连通图

C.生成树

D.无环图

(16)如下图所示,从顶点a出发r按深度优先逬行遍历,则可能得至啲一种顶点序列为(D

)算法。

(18)最小生成树的构造可使用(AA・prim算法B・卡尔算法

C・哈夫晏算法

D.迪杰斯特拉算法

 

(19)下面关于图的存储结构的叙述中正确的是(A)。

A•用邻接矩阵存储图,占用空间大小只与图中顶点数有关,而与边数无关

B•用邻接矩阵存储图,占用空间大小只与图中边数有关,而与顶点数无关

C.用邻接表存储图,占用空间大小只与图中顶点数有关,而与边数无关

D.用邻接表存储图,占用空间大小只与图中边数有关,而与顶点数无关

(20)连通分星是(C)的极通子图。

A.树B.图C.无向图D.有向图

四•应用题(30分)

1.有向图如下图所示,画出邻接矩阵W邻接表

 

解:

(1)邻接矩阵

12345

1

P1101、

2

00010

3

00001

4

10000

5

00010

2

°

4

A

5

A

1

A

4

A

(2)沁表

1

2

3

4

5

 

 

2・已知一个无向图有6个结点,9条边,这9条边依次为(0,1)40,2)40,4)40,5)#(1,2),(2,3),(2,4),(3,4),(4,5)。

试画出该无向图,并从顶点0出发,分别写出按深度优先搜索和按广度优先搜索进行遍历的结点序列。

(5分)

解:

从顶点0出发的深度优先搜索遍历的结点序列:

012345(答案不唯一)

从顶点0出发的广度优先搜索遍历的结点序列:

012453(答案不唯一)

3・已知一个无向图的顶点集为:

{a,b,C,d,e},其邻接矩阵如下,画出草图,写出顶点a出

发按深度优先搜索逬行遍历的结点序列。

(5分)

 

0

1

0

0

1

1

0

0

1

0

0

0

0

1

1

0

1

1

0

1

1

0

1

1

0

 

解:

(2)深度优先搜索:

abdce(答案不唯一)

广度优先搜索:

abedc(答案不唯一)

4•网G的邻接矩阵如下,试画出该图,并画出它的一棵最小生成树。

0

8

10

11

0

8

0

3

0

13

10

3

0

4

0

11

0

4

0

7

0

13

0

7

0

 

解:

最小生删:

Q

 

(1)画出相应的图;

(2)要使此图为完全图需要增加几条边。

11

34

137

5.已知某图G的邻接矩阵如图r

0101

1010

0101

1010

解:

(1)

(2)完全无向图应具有的边数为:

n*(n-l)l/2=4*(4-l)/2=6,所以还要增加2条边(如右图\

6・已知如图所示的有向图,请给出该图的:

 

(1)每个顶点的入/出度;

(2)邻接表;

(3)邻接矩阵。

解:

(1)

(2)

顶点

1

2

3

4

5

6

入度

3

2

1

1

2

2

出度

0

2

2

3

I

3

(3)

7•如图,请完成以下操作:

(2)写出无向带权图的邻接矩阵;

(3)设起点为a,求具最小生成树。

b

6

解:

(1)邻接矩阵为:

(2)起点为a,可以直接由原始图画出最小生成树

0

4

3

00

CO

00

CO

4

0

5

5

9

CO

00

CO

3

5

0

5

00

CO

CO

5

00

5

5

0

7

6

5

4

00

9

00

7

0

3

00

CO

00

CC

00

6

3

0

2

CO

00

S

00

5

C0

2

0

6

00

5

4

CO

CO

6

0

8・给走下列网G:

 

 

(1)画出网G的邻接矩阵;

(2)画出网G的最小生成树。

解:

五.程序题填空题

图G为有向无权图,试在邻接矩阵存储结构上实现删除一条边(v,w)的操作:

DeleteArc(G,v,w)。

若无顶点v或w,返回"ERROR";若成功删除,则边数减1,并返回"0K"。

(提示:

删除一条边的操作,可以将邻接矩阵的第i行全部置0)

解:

StatusDeleteArc(MGraph&Grcharvrcharw)〃在邻接矩阵表示的图G上删除边(vzw)

{if((i=LocateVex(G/v))<0)returnERROR;

if((j=LocateVex(G/w))<0)returnERROR;

if(G.arcs[i][j].adj)

{G.arcs[i][j].adj=0;

G.arcnum―;(或G.arcnum=G.arcnum-l)

}

returnOK;

}

六・算法题

1.编写一个无向图的邻接矩阵转换成邻接表的算法。

2.以知有n个顶点的有向图邻接表,设计算法分别实现以下功能:

(1)求出图G中每个顶点的出度、入度。

(2)求出G中出度最大的一个顶点,输出其顶点序号。

(3)计算图中度为0的顶点数。

1.解:

本题思想是逐个扫描邻接矩阵的各个元素,若第i行第j列的元素为1,则相应的邻接表的第i个单链表上增加一个j结点。

voidtrans(intedges[n][n],Adjlistadj)

{intij;

edgenode*p;

for(i=0;i

{adj[i].data=i;

adj[i].link=NULL;

for(i=0;i

for(j=OJ

{if(edges[i][j]==l)

{p=(edgenode*)malloc(sizeof(edgenode));

p->adjvex=j;

p->next=adj[i].link;

adj[i].link二p;

}

}

}

2・

(1)求出度的思想:

计算出邻接表中第i个单链表的结点数即可。

intoutdegree(adjlistadjjntv)

{intdegree=O;

edgenode*p;

p=adj[v].link;

while(p!

=NULL)

{degree++;

p=p->next;

}

returndegree;

}

voidprintout(adjlistadjjntn)

{inti,degree;

printf("TheOutdegreeare:

\nM);

fo「(i=0;ivn;i++)

{degree=outdegree(adjj);

printf(n(%d/%d)"ii/degree);

}

求入度的思想:

计算出邻接表中结点i的结点数即可。

intindegree(adjlistadjjntnjntv)

{inti/j/degree=O;

edgenode*p;

for(i=0;i

{p=adj[i].link;

while(p!

=NULL)

{if(p->adjvex==v)

degree++;

p=p->next;

}

}

returndegree;

}

voidprintin(adjlistadjjntn)

{inti.degree;

printf("TheIndegreeare:

\nM);

for(i=0;i

{degree=Indegree(adj/n/i);

printf(n(%d/%d)"ii/degree);

}

(2)求最大庚的算法

voidmaxoutdegree(adjlistadjjntn)

{intmaxdegree=Ormaxv=O/degreefi;

for(i=0;i

{degree=outdegree(adjj);

if(degree>maxdegree)

{maxdegree=degree;

maxv=i;

}

}

printf("maxoutdegree%d/maxvertex=%d,,/maxdegree/maxv);

}

(3)求度为0的顶点数的算法

intoutzero(adjlistadjrintn)

{intnum=0J;

for(i=0;i

{if(outdegree(adjJ)==0)

num++;

}

returnnum;

}

模拟考题

1・已知如图所示的有向图,请给出该图的:

(1)每个顶点的入度和出度;

(2)逆邻接表。

解:

(1)

(2)

2・给走下列网G:

顶点

1

2

3

4

5

6

入度

3

2

1

1

2

2

出度

0

2

2

3

1

3

(1)写出网G以B为顶点的广度优先遍历的序列;

(2)画出网G的最小生成树。

3・无向图G如图所示r(l)试画出邻接矩阵;

(2)写出从A出发的深度优先遍历的序列。

3・已知图G的邻接表如下,以顶点1为出发点,完成下列问题:

 

(1)写出以顶点1为出发点的广度优先遍历序列;

(2)画出以顶点1为出发点的深度优先搜索得到的一棵二叉树。

解:

(1)广度优先遍历序列:

1,2,5,4,3

(2)深度优先搜索得到的一棵二叉树:

 

5•试填空完成深度优先搜索的递归函数。

 

#defineMAXVEX100

structvertex

//走义图的最大顶点数

//顶点集合

//边的集合

intvisited[MAXVEX];

voiddfs(adjlistadjjntv){inti;

structedgenode*p;

for(i=l;i<=n;i++)visited[i]=0;

visited[v]=l;

cinv;

p=adj[v卜>link;

while(p!

=NULL)

{if(visited[p->adjvex]==0)dfs(adjlist,p->adjvex);p=p->next;

//顶点编号

//顶点的信息

};

typedefstructgraph

{structvertexvexs[MAXVEX];intedges[MAXVEX][MAXVEX];

}sdjmax;

//深度优先搜索的递归函数

//给visited数组赋初值0

〃取v的边的表头指针

〃从v的未访问过的邻接点出发进行深度优先搜索

〃找V的下一个邻接点

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

当前位置:首页 > 法律文书 > 调解书

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

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