数据结构(C语言描述)课后答案习题答案7

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题7

1)选择题

(1)图中有关路径的定义是(A)。

A.由不同顶点所形成的序列

B.由顶点和相邻顶点对构成的边所形成的序列

C.由不同边所形成的序列

D.上述定义都不是

(2)设无向图的顶点个数为n,则该图最多有(B)条边。

A.n-1 B.n(n-1)/2 C.n(n+1)/2 D.n2

(3)一个n个顶点的连通无向图,其边的个数至少为(A)。

A.n-1 B.n C.n+1 D.n log2n

(4)要连通具有n个顶点的有向图,至少需要(B)条边

A.n-1 B.n C.n+1 D.2n

(5)n个结点的完全有向图含有边的数目为(D)。

A.n2B.n(n+1) C.n/2 D.n(n-1)

(6)一个有n个结点的图,最少有(B)个连通分量,最多有(D)个连通分量。

A.0 B.1 C.n-1 D.n

(7)在一个无向图中,所有顶点的度数之和等于所有边数的(B)倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的(C)倍。

A.1/2 B.2 C.1 D.4

(8)下面结构中最适于表示稀疏无向图的是(C),适于表示稀疏有向图的是(BDE)。

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

(9)下列哪些图的邻接矩阵是对称矩阵(B)。

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

(10)下列有关图遍历的说法不正确的是(C)。

A.连通图深度优先搜索是个递归过程

B.图的广度优先遍历中邻接点的搜索具有“先进先出”的特征C.非连通图不能用深度优先搜索

D.图的遍历要求每个顶点仅被访问一次

(11)某图的邻接表如图7-26所示。

1

2

3

4

5

6

7

图7-26 某图的邻接表

①从顶点v1进行深度优先遍历,遍历过程中要经过的顺序是(A)。

A.v1v2v3B.v1v3v4C.v1v2v4D.v1 v3v5

②从顶点v1进行广度优先遍历,遍历过程中要经过的顺序是(D)。

A.v1v2v3B.v1v3v4C.v1v2v4D.v1 v3v5

(12)一个加权无向连通图的最小生成树(A)。

A.有一棵或者多棵B.只有一棵

C.一定有多棵D.可能不存在

2)判断题

(1)在n个结点的无向图中,若边数大于n-1,则该图必是连通图。(×)

(2)有e条边的无向图,在邻接表中有e个结点。

(×)

(3)有向图中顶点v的度等于其邻接矩阵中第v行中1的个数。

(×)

(4)强连通图的各顶点间均可达。

(√)

(5)邻接多重表是无向图和有向图的链式存储结构。

(×)

(6)用邻接矩阵法存储一个图所需的存储单元数目与图的边数有关。(×)

(7)有n个顶点的无向图,采用邻接矩阵表示,图中的边数等

于邻接矩阵中非零元素之和的一半。(√)

(8)求最小生成树的普里姆(Prim)算法中边上的权可正可负。

(×)

3)填空题

(1)判断一个无向图是一棵树的条件是_有n个顶点,n-1条边的无向连通图__。

(2)一个连通图的___生成树_________是一个极小连通子图。

(3)具有10个顶点的无向图,边的总数最多为____45________。

(4)G是一个非连通无向图,共有28条边,则该图至少有_____9_______个顶点。

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

(6)如果含n个顶点的图形形成一个环,则它有_____n______棵生成树。

4)解答题

(1)按图7-26的邻接表分别写出从v6出发进行广度优先和深度优先遍历序列。

广度优先:v6 v5 v7 v0 v2 v3 v1 v4

深度优先:v6 v5 v7 v0 v2 v3 v1 v4

(2)证明:具有n个顶点和多于n-1条边的无向连通图G一定不是树。

证明:具有n个顶点n-1条边的无向连通图是自由树,即没

有确定根结点的树,每个结点均可当根。若边数多于n-1条,因一条边要连接两个结点,则必因加上这一条边而使两个结点多了一条通路,即形成回路。形成回路的连通图不再是树(在图论中树定义为无回路的连通图)。

(3)画出如图7-27所示的无向网的最小生成树。

v 2v 1v 3v 4

v 5v 6v 7

v 8

13

2265424

31

图7-27 某无向网

(略)

(4)按照Prim 算法,写出从顶点v 2开始构造图7-26的最小生成树的过程。

(略)

(5)按照Sollin 算法,写出构造图7-26的最小生成树的过程。 (略)

(6)按照Dijkstra 算法,写出求图7-26的顶点v 0到其他各个结点的最短路径过程中数组dist 和pre 各分量的变化情况表。

(略)

5)算法题

(1)以邻接多重表作存储结构,写出创建图的算法。

void CreatGraph (AdjList g) //建立有n个顶点和m 条边的无向图的邻接表存储结构

{

int n,m;

scanf("%d%d",&n,&m);

for (i =1,i<=n;i++)//输入顶点信息,建立顶点向量

{scanf(&g[i].vertex); g[i].firstarc=null;}

for (k=1;k<=m;k++)//输入边信息

{

scanf(&v1,&v2);//输入两个顶点

i=GraphLocateVertex (g,v1);

j=GraphLocateVertex (g,v2); //顶点定位

p=(ArcNode *)malloc(sizeof(ArcNode));//申请边结点

p->adjvex=j; p->next=g[i].firstarc; g[i].firstarc=p;//将边结点链入

p=(ArcNode *)malloc(sizeof(ArcNode));

p->adjvex=i;

p->next=g[j].firstarc;

g[j].frstarc=p;

相关文档
最新文档