最新数据结构第7章-答案
数据结构第7章-答案
一、单选题C01、在一个图中,所有顶点的度数之和等于图的边数的倍。
A)1/2 B)1 C)2 D)4B02、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。
A)1/2 B)1 C)2 D)4B03、有8个结点的无向图最多有条边。
A)14 B)28 C)56 D)112C04、有8个结点的无向连通图最少有条边。
A)5 B)6 C)7 D)8C05、有8个结点的有向完全图有条边。
A)14 B)28 C)56 D)112B06、用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。
A)栈 B)队列 C)树 D)图A07、用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。
A)栈 B)队列 C)树 D)图A08、一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为。
A)O(n) B)O(e) C)O(n+e) D)O(n2)C09、已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是。
A)0 2 4 3 1 5 6 B)0 1 3 6 5 4 2 C)0 1 3 4 2 5 6 D)0 3 6 1 5 4 2B10、已知图的邻接矩阵同上题,根据算法,则从顶点0出发,按广度优先遍历的结点序列是。
A)0 2 4 3 6 5 1 B)0 1 2 3 4 6 5 C)0 4 2 3 1 5 6 D)0 1 3 4 2 5 6D11、已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是。
A)0 1 3 2 B)0 2 3 1 C)0 3 2 1 D)0 1 2 3A12、已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是。
A)0 3 2 1 B)0 1 2 3 C)0 1 3 2 D)0 3 1 2A13、图的深度优先遍历类似于二叉树的。
A)先序遍历 B)中序遍历 C)后序遍历 D)层次遍历D14、图的广度优先遍历类似于二叉树的。
数据结构章节练习题-答案第7章图
7.1 选择题1. 对于一个具有n个顶点和e条边的有向图,在用邻接表表示图时,拓扑排序算法时间复杂度为()A) O(n)B)O(n+e)C) O(n*n)D)O(n*n*n)【答案】B2. 设无向图的顶点个数为n,则该图最多有()条边。
A) n-1B)n(n-1)/2C)n(n+1)/2【答案】B3. 连通分量指的是()A) 无向图中的极小连通子图B) 无向图中的极大连通子图C) 有向图中的极小连通子图D) 有向图中的极大连通子图【答案】B4. n 个结点的完全有向图含有边的数目()A) n*n B) n(n+1) C) n/2【答案】D5. 关键路径是()A) AOE网中从源点到汇点的最长路径B) AOE网中从源点到汇点的最短路径C) AOV网中从源点到汇点的最长路径D) n2D) n* (n-1)D) AOV网中从源点到汇点的最短路径【答案】 A 6.有向图中一个顶点的度是该顶点的()A)入度B)出度C)入度与出度之和D)(入度+出度)12【答案】C7.有e 条边的无向图,若用邻接表存储,表中有()边结点。
A) e B) 2eC) e-1D) 2(e-1)【答案】B8.实现图的广度优先搜索算法需使用的辅助数据结构为()A)栈B)队列C)二叉树D)树【答案】B9.实现图的非递归深度优先搜索算法需使用的辅助数据结构为()A)栈B)队列C)二叉树D)树【答案】 A 10.存储无向图的邻接矩阵一定是一个()A)上三角矩阵B)稀疏矩阵C)对称矩阵D)对角矩阵【答案】C11.在一个有向图中所有顶点的入度之和等于出度之和的()倍A) B) 1C) 2D) 4答案】B12.在图采用邻接表存储时,求最小生成树的Prim 算法的时间复杂度为(A) O(n)B) O(n+e)C 0(n2)D) 0(n3))【答案】B13 .下列关于AOE网的叙述中,不正确的是()A) 关键活动不按期完成就会影响整个工程的完成时间B) 任何一个关键活动提前完成,那么整个工程将会提前完成C) 所有的关键活动提前完成,那么整个工程将会提前完成D) 某些关键活动提前完成,那么整个工程将会提前完成【答案】B14. 具有10 个顶点的无向图至少有多少条边才能保证连通()A ) 9B) 10C) 11D) 12【答案】A15. 在含n 个顶点和e 条边的无向图的邻接矩阵中,零元素的个数为()A)e B)2eC)n2-e D)n2-2e【答案】D7.2 填空题1 .无向图中所有顶点的度数之和等于所有边数的________________ 倍。
数据结构第七章习题答案
第七章图
1.下面是一个图的邻接表结构,画出此图,并根据此存储结构和深度优先搜索算法写出从C开始的深度优先搜索序列。
1
2
3
4
5
【解答】
A B F
C D E
C开始的深度优先搜索序列:CDEABF(唯一的结果)
2.假定要在某县所辖六个镇(含县城)之间修公路,若镇I和镇J 之间有可能通过道路连接,则Wij表示这条路的长度。
要求每个镇都通公路且所修公路总里程最短,那么应选择哪些线路来修。
(1).画出该图。
(2).用C语言描述该图的数组表示法存储结构,并注明你所使用变量
的实际含义。
(3).图示你所定义的数据结构。
(4).标识出你选择的线路。
【解答】 (1)
(2)
#define MAX 6 typedef struct {
char vexs[MAX]; // 顶点信息 int arcs[MAX][MAX]; // 边的信息
int vexnum, arcnum; // 顶点数,边数 } MGraph; (3)略
(4){(1,3), (3,4), (2,4), (4,5), (5,6)}
3.图G 如下所示。
(1).给出该图的所有强连通分量。
(2).在图中删除弧<2,1>,然后写出从顶点1开始的拓扑有序序列。
5
4
6
1
3
2
4
15 10
2
15
20
30
4
10
10
【解答】
(1) 共4个强连通分量:
(2) 1,3,2,6,5,4。
数据结构 第7章习题答案
第7章 《图》习题参考答案一、单选题(每题1分,共16分)( C )1. 在一个图中,所有顶点的度数之和等于图的边数的 倍。
A .1/2 B. 1 C. 2 D. 4 (B )2. 在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的 倍。
A .1/2 B. 1 C. 2 D. 4 ( B )3. 有8个结点的无向图最多有 条边。
A .14 B. 28 C. 56 D. 112 ( C )4. 有8个结点的无向连通图最少有 条边。
A .5 B. 6 C. 7 D. 8 ( C )5. 有8个结点的有向完全图有 条边。
A .14 B. 28 C. 56 D. 112 (B )6. 用邻接表表示图进行广度优先遍历时,通常是采用 来实现算法的。
A .栈 B. 队列 C. 树 D. 图 ( A )7. 用邻接表表示图进行深度优先遍历时,通常是采用 来实现算法的。
A .栈 B. 队列 C. 树 D. 图 ()8. 已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是( D )9. 已知图的邻接矩阵同上题8,根据算法,则从顶点0出发,按深度优先遍历的结点序列是A . 0 2 4 3 1 5 6 B. 0 1 3 5 6 4 2C. 0 4 2 3 1 6 5D. 0 1 2 34 6 5 ( D )10. 已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是( A )11. 已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是A .0 2 4 3 1 5 6B. 0 1 3 6 5 4 2C. 0 1 3 4 2 5 6D. 0 3 6 1 5 4 2⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡0100011101100001011010110011001000110010011011110A .0 1 3 2 B. 0 2 3 1 C. 0 3 2 1 D. 0 1 2 3(A)12. 深度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(D)13. 广度优先遍历类似于二叉树的A.先序遍历 B. 中序遍历 C. 后序遍历 D. 层次遍历(A)14. 任何一个无向连通图的最小生成树A.只有一棵 B. 一棵或多棵 C. 一定有多棵 D. 可能不存在(注,生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一)二、填空题(每空1分,共20分)1. 图有邻接矩阵、邻接表等存储结构,遍历图有深度优先遍历、广度优先遍历等方法。
《数据结构(C语言版 第2版)》(严蔚敏 著)第七章练习题答案
《数据结构(C语言版第2版)》(严蔚敏著)第七章练习题答案第7章查找1.选择题(1)对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。
A.(n-1)/2B.n/2C.(n+1)/2D.n答案:C解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。
(2)适用于折半查找的表的存储方式及元素排列要求为()。
A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序答案:D解释:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
(3)如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用()查找法。
A.顺序查找B.折半查找C.分块查找D.哈希查找答案:C解释:分块查找的优点是:在表中插入和删除数据元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。
由于块内是无序的,故插入和删除比较容易,无需进行大量移动。
如果线性表既要快速查找又经常动态变化,则可采用分块查找。
(4)折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中()比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50答案:A解释:表中共10个元素,第一次取⎣(1+10)/2⎦=5,与第五个元素20比较,58大于20,再取⎣(6+10)/2⎦=8,与第八个元素70比较,依次类推再与30、50比较,最终查找失败。
(5)对22个记录的有序表作折半查找,当查找失败时,至少需要比较()次关键字。
A.3B.4C.5D.6答案:B解释:22个记录的有序表,其折半查找的判定树深度为⎣log222⎦+1=5,且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。
(6)折半搜索与二叉排序树的时间性能()。
数据结构课后习题答案第七章
第七章图(参考答案)7.1(1)邻接矩阵中非零元素的个数的一半为无向图的边数;(2)A[i][j]= =0为顶点,I 和j无边,否则j和j有边相通;(3)任一顶点I的度是第I行非0元素的个数。
7.2(1)任一顶点间均有通路,故是强连通;(2)简单路径V4 V3 V1 V2;(3)0 1 ∞ 1∞ 0 1 ∞1 ∞ 0 ∞∞∞ 1 0邻接矩阵邻接表(2)从顶点4开始的DFS序列:V5,V3,V4,V6,V2,V1(3)从顶点4开始的BFS序列:V4,V5,V3,V6,V1,V27.4(1)①adjlisttp g; vtxptr i,j; //全程变量② void dfs(vtxptr x)//从顶点x开始深度优先遍历图g。
在遍历中若发现顶点j,则说明顶点i和j间有路径。
{ visited[x]=1; //置访问标记if (y= =j){ found=1;exit(0);}//有通路,退出else { p=g[x].firstarc;//找x的第一邻接点while (p!=null){ k=p->adjvex;if (!visited[k])dfs(k);p=p->nextarc;//下一邻接点}}③ void connect_DFS (adjlisttp g)//基于图的深度优先遍历策略,本算法判断一邻接表为存储结构的图g种,是否存在顶点i //到顶点j的路径。
设 1<=i ,j<=n,i<>j.{ visited[1..n]=0;found=0;scanf (&i,&j);dfs (i);if (found) printf (” 顶点”,i,”和顶点”,j,”有路径”);else printf (” 顶点”,i,”和顶点”,j,”无路径”);}// void connect_DFS(2)宽度优先遍历全程变量,调用函数与(1)相同,下面仅写宽度优先遍历部分。
数据结构第七章参考答案
习题71.填空题(1)由10000个结点构成的二叉排序树,在等概率查找的条件下,查找成功时的平均查找长度的最大值可能达到(___________)。
答案:5000.5(2)长度为11的有序序列:1,12,13,24,35,36,47,58,59,69,71进行等概率查找,如果采用顺序查找,则平均查找长度为(___________),如果采用二分查找,则平均查找长度为(___________),如果采用哈希查找,哈希表长为15,哈希函数为H(key)=key%13,采用线性探测解决地址冲突,即d i=(H(key)+i)%15,则平均查找长度为(保留1位小数)(___________)。
答案:6,3,1.6(3)在折半查找中,查找终止的条件为(___________)。
答案:找到匹配元素或者low>high?(4)某索引顺序表共有元素275个,平均分成5块。
若先对索引表采用顺序查找,再对块元素进行顺序查找,则等概率情况下,分块查找成功的平均查找长度是(___________)。
答案:31(5)高度为8的平衡二叉树的结点数至少是(___________)。
答案: 54 计算公式:F(n)=F(n-1)+F(n-2)+1(6)对于这个序列{25,43,62,31,48,56},采用的散列函数为H(k)=k%7,则元素48的同义词是(___________)。
答案:62(7)在各种查找方法中,平均查找长度与结点个数无关的查找方法是(___________)。
答案:散列查找(8)一个按元素值排好的顺序表(长度大于2),分别用顺序查找和折半查找与给定值相等的元素,平均比较次数分别是s和b,在查找成功的情况下,s和b的关系是(___________);在查找不成功的情况下,s和b的关系是(___________)。
答案:(1)(2s-1)b=2s([log2(2s-1)]+1)-2[log2(2s-1)]+1+1(2)分两种情况考虑,见解答。
数据结构 第7章 图答案
第7章图部分答案解释如下。
2. 不一定是连通图,可能有若干连通分量 11. 对称矩阵可存储上(下)三角矩阵14.只有有向完全图的邻接矩阵是对称的 16. 邻接矩阵中元素值可以存储权值21. 只有无向连通图才有生成树 22. 最小生成树不唯一,但最小生成树上权值之和相等26. 是自由树,即根结点不确定35. 对有向无环图,拓扑排序成功;否则,图中有环,不能说算法不适合。
42. AOV网是用顶点代表活动,弧表示活动间的优先关系的有向图,叫顶点表示活动的网。
45. 能求出关键路径的AOE网一定是有向无环图46. 只有该关键活动为各关键路径所共有,且减少它尚不能改变关键路径的前提下,才可缩短工期。
48.按着定义,AOE网中关键路径是从“源点”到“汇点”路径长度最长的路径。
自然,关键路径上活动的时间延长多少,整个工程的时间也就随之延长多少。
三.填空题1.有n个顶点,n-1条边的无向连通图2.有向图的极大强连通子图3. 生成树4. 455. n(n-1)/2 6 . 7. 9 8. n9. 2(n-1) 10. N-1 11. n-1 12. n 13. N-1 14. n15. N16. 3 17. 2(N-1) 18. 度出度 19. 第I列非零元素个数 20.n 2e21.(1)查找顶点的邻接点的过程 (2)O(n+e) (3)O(n+e) (4)访问顶点的顺序不同(5)队列和栈22. 深度优先 23.宽度优先遍历 24.队列25.因未给出存储结构,答案不唯一。
本题按邻接表存储结构,邻接点按字典序排列。
25题(1) 25题(2)26.普里姆(prim)算法和克鲁斯卡尔(Kruskal)算法 27.克鲁斯卡尔28.边稠密边稀疏 29. O(eloge)边稀疏 30.O(n2) O(eloge)31.(1)(V i,V j)边上的权值都大的数(2)1 负值(3)为负边32.(1)n-1 (2)普里姆 (3)最小生成树 33.不存在环 34.递增负值35.16036.O(n2) 37. 50,经过中间顶点④ 38. 75 39.O(n+e)40.(1)活动(2)活动间的优先关系(3)事件(4)活动边上的权代表活动持续时间41.关键路径 42.(1)某项活动以自己为先决条件(2)荒谬(3)死循环43.(1)零(2)V k度减1,若V k入度己减到零,则V k顶点入栈(3)环44.(1)p<>nil (2)visited[v]=true (3)p=g[v].firstarc (4)p=p^.nextarc45.(1)g[0].vexdata=v (2)g[j].firstin (3)g[j].firstin (4)g[i].firstout(5)g[i].firstout (6)p^.vexj (7)g[i].firstout (8)p:=p^.nexti(9)p<>nil (10)p^.vexj=j(11)firstadj(g,v0) (12)not visited[w] (13)nextadj(g,v0,w)46.(1)0 (2)j (3)i (4)0 (5)indegree[i]==0 (6)[vex][i] (7)k==1(8)indegree[i]==047.(1)p^.link:=ch[u].head (2)ch[u].head:=p (3)top<>0 (4)j:=top(5)top:=ch[j].count(6)t:=t^.link48.(1)V1 V4 V3 V6 V2 V5(尽管图以邻接表为存储结构,但因没规定邻接点的排列,所以结果是不唯一的。
数据结构(C++版)课后答案 (王红梅)第7章 查找技术
第7 章查找技术课后习题讲解1. 填空题⑴顺序查找技术适合于存储结构为()的线性表,而折半查找技术适用于存储结构为()的线性表,并且表中的元素必须是()。
【解答】顺序存储和链接存储,顺序存储,按关键码有序⑵设有一个已按各元素值排好序的线性表,长度为125,用折半查找与给定值相等的元素,若查找成功,则至少需要比较()次,至多需比较()次。
【解答】1,7【分析】在折半查找判定树中,查找成功的情况下,和根结点的比较次数最少,为1次,最多不超过判定树的深度。
⑶对于数列{25,30,8,5,1,27,24,10,20,21,9,28,7,13,15},假定每个结点的查找概率相同,若用顺序存储结构组织该数列,则查找一个数的平均比较次数为()。
若按二叉排序树组织该数列,则查找一个数的平均比较次数为()。
【解答】8,59/15【分析】根据数列将二叉排序树画出,将二叉排序树中查找每个结点的比较次数之和除以数列中的元素个数,即为二叉排序树的平均查找长度。
⑷长度为20的有序表采用折半查找,共有()个元素的查找长度为3。
【解答】4【分析】在折半查找判定树中,第3层共有4个结点。
⑸假定一个数列{25,43,62,31,48,56},采用的散列函数为H(k)=k mod 7,则元素48的同义词是()。
【解答】62【分析】H(48)= H(62)=6⑹在散列技术中,处理冲突的两种主要方法是()和()。
【解答】开放定址法,拉链法⑺在各种查找方法中,平均查找长度与结点个数无关的查找方法是()。
【解答】散列查找【分析】散列表的平均查找长度是装填因子的函数,而不是记录个数n的函数。
⑻与其他方法相比,散列查找法的特点是()。
【解答】通过关键码计算记录的存储地址,并进行一定的比较2. 选择题⑴静态查找与动态查找的根本区别在于()。
A 它们的逻辑结构不一样B 施加在其上的操作不同C 所包含的数据元素的类型不一样D 存储实现不一样【解答】B【分析】静态查找不涉及插入和删除操作,而动态查找涉及插入和删除操作。
数据结构第七章课后习题答案 (1)
7_1对于图题7.1(P235)的无向图,给出:(1)表示该图的邻接矩阵。
(2)表示该图的邻接表。
(3)图中每个顶点的度。
解:(1)邻接矩阵:0111000100110010010101110111010100100110010001110(2)邻接表:1:2----3----4----NULL;2: 1----4----5----NULL;3: 1----4----6----NULL;4: 1----2----3----5----6----7----NULL;5: 2----4----7----NULL;6: 3----4----7----NULL;7: 4----5----6----NULL;(3)图中每个顶点的度分别为:3,3,3,6,3,3,3。
7_2对于图题7.1的无向图,给出:(1)从顶点1出发,按深度优先搜索法遍历图时所得到的顶点序(2)从顶点1出发,按广度优先法搜索法遍历图时所得到的顶点序列。
(1)DFS法:存储结构:本题采用邻接表作为图的存储结构,邻接表中的各个链表的结点形式由类型L_NODE规定,而各个链表的头指针存放在数组head中。
数组e中的元素e[0],e[1],…..,e[m-1]给出图中的m条边,e中结点形式由类型E_NODE规定。
visit[i]数组用来表示顶点i是否被访问过。
遍历前置visit各元素为0,若顶点i被访问过,则置visit[i]为1.算法分析:首先访问出发顶点v.接着,选择一个与v相邻接且未被访问过的的顶点w访问之,再从w 开始进行深度优先搜索。
每当到达一个其所有相邻接的顶点都被访问过的顶点,就从最后访问的顶点开始,依次退回到尚有邻接顶点未曾访问过的顶点u,并从u开始进行深度优先搜索。
这个过程进行到所有顶点都被访问过,或从任何一个已访问过的顶点出发,再也无法到达未曾访问过的顶点,则搜索过程就结束。
另一方面,先建立一个相应的具有n个顶点,m条边的无向图的邻接表。
数据结构-第7章图答案
7.3 图的遍历 从图中某个顶点出发游历图,访遍图中其余顶点, 并且使图中的每个顶点仅被访问一次的过程。 一、深度优先搜索 从图中某个顶点V0 出发,访问此顶点,然后依次 从V0的各个未被访问的邻接点出发深度优先搜索遍 历图,直至图中所有和V0有路径相通的顶点都被访 问到,若此时图中尚有顶点未被访问,则另选图中 一个未曾被访问的顶点作起始点,重复上述过程, 直至图中所有顶点都被访问到为止。
void BFSTraverse(Graph G, Status (*Visit)(int v)) { // 按广度优先非递归遍历图G。使用辅助队列Q和访问标志数组 visited。 for (v=0; v<G.vexnum; ++v) visited[v] = FALSE; InitQueue(Q); // 置空的辅助队列Q for ( v=0; v<G.vexnum; ++v ) if ( !visited[v]) { // v尚未访问 EnQueue(Q, v); // v入队列 while (!QueueEmpty(Q)) { DeQueue(Q, u); // 队头元素出队并置为u visited[u] = TRUE; Visit(u); // 访问u for ( w=FirstAdjVex(G, u); w!=0; w=NextAdjVex(G, u, w) ) if ( ! visited[w]) EnQueue(Q, w); // u的尚未访问的邻接顶点w入队列Q
4。邻接多重表
边结点
mark ivex
顶点结点
ilink
jvex
jlink
info
data
firstedge
#define MAX_VERTEX_NUM 20 typedef emnu {unvisited, visited} VisitIf; typedef struct Ebox { VisitIf mark; // 访问标记 int ivex, jvex; // 该边依附的两个顶点的位置 struct EBox *ilink, *jlink; // 分别指向依附这两个顶点的下一条 边 InfoType *info; // 该边信息指针 } EBox; typedef struct VexBox { VertexType data; EBox *firstedge; // 指向第一条依附该顶点的边 } VexBox; typedef struct { VexBox adjmulist[MAX_VERTEX_NUM]; int vexnum, edgenum; // 无向图的当前顶点数和边数 } AMLGraph;
《数据结构(C语言版 第2版)》(严蔚敏 著)第七章练习题答案
《数据结构(C语言版第2版)》(严蔚敏著)第七章练习题答案第7章查找1.选择题(1)对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。
A.(n-1)/2B.n/2C.(n+1)/2D.n答案:C解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。
(2)适用于折半查找的表的存储方式及元素排列要求为()。
A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序答案:D解释:折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
(3)如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用()查找法。
A.顺序查找B.折半查找C.分块查找D.哈希查找答案:C解释:分块查找的优点是:在表中插入和删除数据元素时,只要找到该元素对应的块,就可以在该块内进行插入和删除运算。
由于块内是无序的,故插入和删除比较容易,无需进行大量移动。
如果线性表既要快速查找又经常动态变化,则可采用分块查找。
(4)折半查找有序表(4,6,10,12,20,30,50,70,88,100)。
若查找表中元素58,则它将依次与表中()比较大小,查找结果是失败。
A.20,70,30,50B.30,88,70,50C.20,50D.30,88,50答案:A解释:表中共10个元素,第一次取⎣(1+10)/2⎦=5,与第五个元素20比较,58大于20,再取⎣(6+10)/2⎦=8,与第八个元素70比较,依次类推再与30、50比较,最终查找失败。
(5)对22个记录的有序表作折半查找,当查找失败时,至少需要比较()次关键字。
A.3B.4C.5D.6答案:B解释:22个记录的有序表,其折半查找的判定树深度为⎣log222⎦+1=5,且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。
(6)折半搜索与二叉排序树的时间性能()。
数据结构第三版第七章作业参考答案
//栈指针置初值
do { while (t)
//将 t 的所有左结点进栈
{ top++;
St[top]=t;
t=t->lchild;
} p=NULL; flag=1; while (top!=-1 && flag)
//p 指e当前结点的前一个已fg
的
结
点
//h置 t 的fgij为已fg过
{ t=St[top]; if (t->rchild==p) { if (t==s)
7.1 设二叉树 bt 的一种存储结构如下:
1 2 3 4 5 6 7 8 9 10 lchild 0 0 2 3 7 5 8 0 10 1 data j h f d b a c e g i rchild 0 0 0 9 4 0 0 0 0 0
其中,bt 为树根结点指针,lchild、rchild 分别为结点的左、右孩子指针域,
Ctree(t->lchild,A,2*i);
//递归构造*t 的左子树
Ctree(t->rchild,A,2*i+1); //递归构造*t 的右子树
}
}
7.5 设计一个算法,将一棵以二叉链方式存储的二叉树 t 按顺序方式存储到数组 A 中。
解:由二叉树的顺序存储方式可知本题的递归模型f()如下:
f(t,A,i):A[i]=' ';
//顺序队首尾指针 //cm=1 表示二叉树为完全二叉树 //bj=1 表示到目前为止所有结点均有左右孩子
if (b!=NULL)
{ rear++;
Qu[rear]=b;
while (first!=rear) { first++;
数据结构第7章作业参考答案
第7章查找一、单选1.顺序查找法比较适合于(C )。
A. 数据有序的序列B. 数据基本有序的序列C. 数据无序的序列D. 数据集比较大的序列2.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,查找成功时平均查找长度ASL为(B )。
A. (n-1)/2B. (n+1)/2C. n/2D. n3.二分查找法适用于存储结构为(A )的线性表。
A. 顺序存储且按关键字有序B. 链式存储且按关键字有序C. 顺序存储或链式存储D. 顺序存储且无序4.采用分快查找时,数据的组织方式为( B )。
A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同5.设有一个已按各元素的值排好序的顺序表(长度大于2),现分别用顺序查找法和二分查找法查找与给定值k 相等的元素,比较的次数分别是s 和b,在查找不成功的情况下,s 和b的关系是(C )。
A. s=bB. s<bC. s>bD. s>=b6.设顺序存储的线性表共有123个元素,按分块查找的要求等分成3块。
若对索引表采用顺序查找来确定块,并在确定的块中进行顺序查找,则在查找概率相等的情况下,分块查找成功时的平均查找长度为(B )。
A. 41B. 23C. 21D. 627.含n个关键字的二叉排序树的平均查找长度主要取决于( C )。
A. 关键字的个数B. 关键字的取值范围C. 树的形态D. 关键字的数据类型8.在二叉排序树上查找一个记录,最坏情况下查找成功时的平均查找长度为(A )。
A. 与顺序表的平均查找长度相同B. 小于顺序表的平均查找长度C. 大于顺序表的平均查找长度D. 无法与顺序表的平均查找长度比较9.在一个二叉排序树中,按( B )遍历是一个有序序列。
数据结构 第7章答案(已核 )
7.6习题一、名词解释(1)主关键字(2)平均查找长度(3)静态查找表(4)动态查找表(5)二叉查找树(6)哈希表二、填空题(1)静态查找表的存储结构主要采用顺序存储结构,如果需要,也可以采用链式存储结构,但当使用二分(折半)查找算法或(斐波那契数列)查找算法来查找时,要求查找表只能是顺序存储结构,并且查找表中的数据序列必须有序。
(2)通过中根序遍历一棵二叉查找树得到的数据序列必然是一个非降序(有序)序列。
(3)各种查找方法中,平均查找长度与结点个数n无关的查找方法是哈希查找。
*(4)如果对一个有序查找表SST进行折半查找,在最坏时要比较10次,那么对该查找表进行顺序查找时,在最坏时要比较210 -1 次。
解析:最坏情况要比较10次,说明树的高度是10。
而一棵深度为10的二叉树,最多有210 -1个结点。
*(5)深度为7的平衡二叉树至少有33 个结点。
解析:在节点最少的情况下,左右子树的高度差为1,则总节点数S(n)=S(n-1)+S(n-2)+1。
已知,初始值S(1) = 1,S(2) = 2,可以推出:S(3) = 4S(4) = 7S(5) = 12S(6) = 20S(7) = 33所以,高度为7的平制衡二百叉树最少结点数是33。
假设深度为n的平衡二叉树至少有F(n)个结点,那么F(n)满足F(n)=F(n-1)+F(n-2)+1。
三、简答题(1)请画出长度为8的有序查找表的折半查找判定树。
(2)折半查找的前提:顺序存储、查找表有序。
(3)已知关键字序列为{45,28,67,33,29,50},二叉排序树初始为空,要求:①画出按正向(从关键字45开始)顺序插入结点建立的二叉排序树。
②画出按反向(从关键字50开始)顺序插入结点建立的二叉排序树。
(4)二叉排序树的平均查找长度:与结点个数和树的形态有关。
(5)设哈希表的地址空间为0~6,哈希函数H(key)=key % 7。
请对关键字序列{32,13,49,18,22,38}按线性探测再散列处理冲突的方法构造哈希表。
数据结构试题和答案第7章ans
数据结构试题和答案第7章ans1.下面关于图的存储的叙述中正确的是( )。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关答案:C2.对于具有e条边的无向图,它的邻接表中有 ( ) 个边结点。
A:e-1B:eC:2(e-1)D:2e答案:D,(vi,vj)以vi作为头结点保存一次,以vj作为头结点保存一次。
3.图的深度优先搜索类似于树的( A )次序遍历。
A:先序B:中序C:后序D:层次4.设无向图的顶点个数为n,则该图最多有()条边。
A: n-1 B: n(n-1)/2C: n(n+1)/2 D: n(n-1)答案:最多边时:完全图。
选B完全有向图: n(n-1)5.对于有向图,其邻接矩阵表示比邻接表表示更易于( )。
A: 求一个顶点的度B: 求一个顶点的邻接点C: 进行图的深度优先遍历D: 进行图的广度优先遍历答案:B6.与邻接矩阵相比,邻接表更适合于存储( )。
A: 无向图B连通图C稀疏图D稠密图答案:C7.若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为()A.图中每个顶点的入度B.图中每个顶点的出度C.图中弧的条数D.图中连通分量的数目答案:A8.设无向图的顶点个数为n,则该图最多有()条边。
A.n-1 B.n(n-1)/2 C.n(n+1)/2 D.0 E.n29.一个n个顶点的连通无向图,其边的个数至少为()。
A.n-1 B.n C.n+1 D.nlogn;答案:极小连通图,A10.n个结点的完全有向图含有边的数目()。
A.n*n B.n(n+1)C.n/2 D.n*(n-l)11.在一个无向图中,所有顶点的度数之和等于所有边数(B )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( C )倍。
算法与数据结构答案第7章图
第7 章图一、基础知识题7.1设无向图的顶点个数为n,则该图最多有多少条边?【解答】n(n-1)/27.2一个n个顶点的连通无向图,其边的个数至少为多少?【解答】n-17.3要连通具有n个顶点的有向图,至少需要多少条弧?【解答】n7.4 n个顶点的完全有向图含有弧的数目是多少?【解答】n(n-1)7.5一个有n个顶点的无向图,最少有多少个连通分量,最多有多少个连通分量。
【解答】1, n7.6图的BFS生成树的树高要小于等于同图DFS生成树的树高,对吗?【解答】对7.7无向图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出发进行深度优先遍历可能得到的全部顶点序列。
【解答】abedfc, acfdeb, aebdfc, aedfcb7.8 在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度是多少?【解答】O(n+e)7.9若一个具有n个顶点,e条边的无向图是一个森林,则该森林中必有多少棵树?【解答】n-e7.10 n个顶点的无向图的邻接矩阵至少有多少非零元素?【解答】07.11证明:具有n个顶点和多于n-1条边的无向连通图G一定不是树。
【证明】具有n个顶点n-1条边的无向连通图是自由树,即没有确定根结点的树,每个结点均可当根。
若边数多于n-1条,因一条边要连接两个结点,则必因加上这一条边而使两个结点多了一条通路,即形成回路。
形成回路的连通图不再是树。
7.12证明对有向图顶点适当编号,使其邻接矩阵为下三角形且主对角线为全零的充要条件是该图是无环图。
【证明】该有向图顶点编号的规律是让弧尾顶点的编号大于弧头顶点的编号。
由于不允许从某顶点发出并回到自身顶点的弧,所以邻接矩阵主对角元素均为0。
先证明该命题的充分条件。
由于弧尾顶点的编号均大于弧头顶点的编号,在邻接矩阵中,非零元素(A[i][j]=1)自然是落到下三角矩阵中;命题的必要条件是要使上三角为0,则不允许出现弧头顶点编号大于弧尾顶点编号的弧,否则,就必然存在环路。
数据结构章节练习题及答案7
第7章排序算法1. 请简述排序的作用。
排序的作用是将一个待排序元素集合按关键字递增(或递减)顺序整理为一个有序序列。
2. 请简述稳定排序和不稳定排序的含义。
若采用某种排序算法对任一组元素进行排序,在排序前后,那些具有相同关键字值的元素之间的相对次序都保持不变,则将这种排序算法称为是稳定的,否则称为是不稳定的。
3. 请简述各种排序算法的适用范围。
排序算法的适用范围如下:(a)直接插入排序、简单选择排序和冒泡排序都是简单排序算法,它们的时间复杂度和空间复杂度分别为O(n2)和O(1)。
若待排序元素数量n较小,可以选用直接插入排序和冒泡排序。
另外,当待排序元素基本有序时,也应选用直接插入排序和冒泡排序,此时时间复杂度都能达到O(n)。
若元素本身数据量较大,元素移动操作代价较高,则应选用平均移动元素次数最少的简单选择排序。
希尔排序是对直接插入排序算法的改进,大大降低了时间复杂度,但它是一种不稳定的排序算法。
(b)堆排序、快速排序和归并排序主要适用于待排序元素数量n较大的情况,当待排序元素数量n较小时,它们的性能有可能劣于简单排序算法。
因此,在实际应用时,快速排序算法和归并排序算法经常与简单排序算法结合使用(例如,可以先用快速排序算法将集合划分为规模更小的子集合,对于元素数量较小的子集合,则用直接插入排序算法进行排序)。
在所有平均时间复杂度为O(nlog2n)的算法中,尽管快速排序在最坏情况下时间复杂度较高,但它通常被认为是平均性能最好的一种算法,并且通过优化可以降低最坏情况出现的概率。
归并排序是一种稳定的排序算法,其时间性能一般要优于堆排序,但它所需要的辅助空间较多,当应用环境要求排序前后具有相同值的元素相对次序不能改变时可以考虑使用。
堆排序所需的辅助空间最少,当可用空间非常有限时可以考虑使用。
(c)箱排序和基数排序的时间复杂度最低,但它们的空间复杂度最高。
箱排序主要适用于待排序元素长度(即d值)较小的情况,在实际中应用不多;基数排序是箱排序的改进,主要适用于整数或字符串的排序,或者与其他排序算法结合进行实数的排序(例如,可以先用基数排序算法按整数部分将元素分成若干个子集合,再对每个子集合应用直接插入排序算法进行排序)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单选题C01、在一个图中,所有顶点的度数之和等于图的边数的倍。
A)1/2 B)1 C)2 D)4B02、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的倍。
A)1/2 B)1 C)2 D)4B03、有8个结点的无向图最多有条边。
A)14 B)28 C)56 D)112C04、有8个结点的无向连通图最少有条边。
A)5 B)6 C)7 D)8C05、有8个结点的有向完全图有条边。
A)14 B)28 C)56 D)112B06、用邻接表表示图进行广度优先遍历时,通常是采用来实现算法的。
A)栈 B)队列 C)树 D)图A07、用邻接表表示图进行深度优先遍历时,通常是采用来实现算法的。
A)栈 B)队列 C)树 D)图A08、一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为。
A)O(n) B)O(e) C)O(n+e) D)O(n2)C09、已知图的邻接矩阵,根据算法思想,则从顶点0出发按深度优先遍历的结点序列是。
A)0 2 4 3 1 5 6 B)0 1 3 6 5 4 2 C)0 1 3 4 2 5 6 D)0 3 6 1 5 4 2B10、已知图的邻接矩阵同上题,根据算法,则从顶点0出发,按广度优先遍历的结点序列是。
A)0 2 4 3 6 5 1 B)0 1 2 3 4 6 5 C)0 4 2 3 1 5 6 D)0 1 3 4 2 5 6D11、已知图的邻接表如下所示,根据算法,则从顶点0出发按深度优先遍历的结点序列是。
A)0 1 3 2 B)0 2 3 1 C)0 3 2 1 D)0 1 2 3A12、已知图的邻接表如下所示,根据算法,则从顶点0出发按广度优先遍历的结点序列是。
A)0 3 2 1 B)0 1 2 3 C)0 1 3 2 D)0 3 1 2A13、图的深度优先遍历类似于二叉树的。
A)先序遍历 B)中序遍历 C)后序遍历 D)层次遍历D14、图的广度优先遍历类似于二叉树的。
A)先序遍历 B)中序遍历 C)后序遍历 D)层次遍历B15、任何一个无向连通图的最小生成树。
A)只有一棵 B)一棵或多棵 C)一定有多棵 D)可能不存在A16、对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为,所有边链表中边结点的总数为。
A)n、2e B)n、e C)n、n+e D)2n、2eC17、判断有向图是否存在回路,可以利用___算法。
A)关键路径 B)最短路径的Dijkstra C)拓扑排序 D)广度优先遍历A18、若用邻接矩阵表示一个有向图,则其中每一列包含的“1”的个数为。
A)图中每个顶点的入度 B)图中每个顶点的出度 C)图中弧的条数 D)图中连通分量的数目C19、求最短路径的Dijkstra算法的时间复杂度是___。
A)O(n) B)O(n+e) C)O(n2) D)O(n*e)B20、设图G采用邻接表存储,则拓扑排序算法的时间复杂度为。
A)O(n) B)O(n+e) C)O(n2) D)O(n*e)D21、带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中。
A)第i行非∞的元素之和 B)第i列非∞的元素之和C)第i行非∞且非0的元素个数 D)第i列非∞且非0的元素个数C22、一个有n个顶点的无向图最多有条边。
A)n B)n(n-1) C)n(n-1)/2 D)2nD23、对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是。
A)n B)(n-1)2 C)n-1 D)n2A24、对某个无向图的邻接矩阵来说,。
A)第i行上的非零元素个数和第i列的非零元素个数一定相等B)矩阵中的非零元素个数等于图中的边数C)第i行上,第i列上非零元素总数等于顶点v i的度数D)矩阵中非全零行的行数等于图中的顶点数D25、已知图的表示如下,若从顶点a出发按深度搜索法进行遍历,则可能得到的一种顶点序列为。
A)abecdf B)acfebd C)aebcfd D)aedfcbB26、已知图的表示如上题,若从顶点a出发按广度搜索法进行遍历,则可能得到的一种顶点序列为。
A)abcedf B)abcefd C)aebcfd D)acfdebC27、有向图的邻接表存储结构如下图所示,则根据有向图的深度遍历算法,从顶点v1出发得到的顶点序列是。
A)v1,v2,v3,v5,v4 B)v1,v2,v3,v4,v5 C)v1,v3,v4,v5,v2 D)v1,v4,v3,v5,v2B28、有向图的邻接表存储结构如上题所示,则根据有向图的广度遍历算法,从顶点v1出发得到的顶点序列是。
A)v1,v2,v3,v4,v5 B)v1,v3,v2,v4,v5 C)v1,v2,v3,v5,v4 D)v1,v4,v3,v5,v2A29、一个图中有n个顶点且包含k个连通分量,若按深度优先搜索方法访问所有结点,则必须调用次深度优先遍历算法。
A)k B)1 C)n-k D)nD30、以下不正确的说法是。
A)无向图中的极大连通子图称为连通分量B)连通图的广度优先搜索中一般要采用队列来暂存刚访问过的顶点C)图的深度优先搜索中一般要采用栈来暂存刚访问过的顶点D)有向图的遍历不可采用广度优先搜索方法A31、图中有关路径的定义是___。
A)由顶点和相邻顶点序偶构成的边所形成的序列 B)由不同顶点所形成的序列C)由不同边所形成的序列 D)上述定义都不是B32、设无向图的顶点个数为n,则该图最多有___条边。
A)n-1 B)n(n-1)/2 C)n(n+1)/2 D)nA33、一个n 个顶点的连通无向图,其边的个数至少为___。
A)n-1 B)n C)n+1 D)nlognB34、要连通具有n 个顶点的有向图,至少需要___条边。
A)n-l B)n C)n+l D)2nB35、在一个无向图中,所有顶点的度数之和等于所有边数___倍。
A)1/2 B)2 C)1 D)4C36、在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的___倍。
A)1/2 B)2 C)1 D)4A37、用有向无环图描述表达式(A+B)*((A+B)/A),至少需要顶点的数目为___。
A)5 B)6 C)8 D)9A38、用DFS 遍历一个无环有向图,并在DFS 算法退栈返回时打印相应的顶点,则输出的顶点序列是___。
A)逆拓扑有序 B)拓扑有序 C)无序的 D)原顺序B39、下列___的邻接矩阵是对称矩阵。
A)有向图 B)无向图 C)AOV网 D)AOE网BBD40、从邻接阵矩可以看出,该图共有①个顶点;如果是有向图该图共有②条弧;如果是无向图,则共有③条边。
① A)9 B)3 C)6 D)1 E)以上答案均不正确② A)5 B)4 C)3 D)2 E)以上答案均不正确③ A)5 B)4 C)3 D)2 E)以上答案均不正确B41、当一个有N 个顶点的图用邻接矩阵A 表示时,顶点Vi 的度是___。
B42、下列说法不正确的是___。
A)图的遍历是从给定的源点出发每一个顶点仅被访问一次 B)图的深度遍历不适用于有向图C)遍历的基本算法有两种:深度遍历和广度遍历 D)图的深度遍历是一个递归过程D43、无向图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)abecdf B)acfebd C)aebcfd D)aedfcbD44、如图所示,在5个序列“aebdfc、acfdeb、aedfcb、aefdcb、aefdbc”,符合深度优先遍历的序列有___个。
A)5 B)4 C)3 D)2CC45、图中给出由7个顶点组成的无向图。
从顶点1出发,对它进行深度优先遍历得到的序列是①,进行广度优先遍历得到的顶点序列是②。
① A)1354267 B)1347652 C)1534276 D)1247653 E)以上答案均不正确② A)1534267 B)1726453 C)l354276 D)1247653 E)以上答案均不正确B46、在图采用邻接表存储时,求最小生成树的Prim算法的时间复杂度为___。
A)O(n) B)O(n+e) C)O(n2) D)O(n3)CABA47、下面是求连通网的最小生成树的prim算法:集合VT,ET分别放顶点和边,初始为①,下面步骤重复n-1次:②;③;最后:④。
① A)VT,ET 为空 B)VT为所有顶点,ET为空C)VT为网中任意一点,ET为空 D)VT为空,ET为网中所有边② A)选i属于VT,j不属于VT,且(i,j)上的权最小 B)选i属于VT,j不属于VT,且(i,j)上的权最大C)选i不属于VT,j不属于VT,且(i,j)上的权最小 D)选i不属于VT,j不属于VT,且(i,j)上的权最大③ A)顶点i加入VT,(i,j)加入ET B)顶点j加入VT,(i,j)加入ETC)顶点j加入VT,(i,j)从ET中删去 D)顶点i,j加入VT,(i,j)加入ET④ A)ET中为最小生成树 B)不在ET中的边构成最小生成树C)ET 中有n-1条边时为生成树,否则无解 D)ET中无回路时,为生成树,否则无解A48、下面不正确的是___。
①求从指定源点到其余各顶点的Dijkstra最短路径算法中弧上权不能为负的原因是在实际应用中无意义;②利用Dijkstra求每一对不同顶点之间的最短路径的算法时间是O(n3);(图用邻接矩阵表示)③Floyd求每对不同顶点对的算法中允许弧上的权为负,但不能有权和为负的回路。
A)①②③ B)① C)①③ D)②③A49、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={<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,V7 B)V1,V3,V2,V6,V4,V5,V7 C)V1,V3,V4,V5,V2,V6,V7 D)V1,V2,V5,V3,V4,V6,V7D50、在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是___。
A)G中有弧<Vi,Vj> B)G中有一条从Vi到Vj的路径C)G中没有弧<Vi,Vj> D)G 中有一条从Vj到Vi的路径A51、关键路径是事件结点网络中___。