收藏 分享(赏)

第3章 数据结构t.doc

上传人:fmgc7290 文档编号:7688338 上传时间:2019-05-23 格式:DOC 页数:44 大小:698KB
下载 相关 举报
第3章 数据结构t.doc_第1页
第1页 / 共44页
第3章 数据结构t.doc_第2页
第2页 / 共44页
第3章 数据结构t.doc_第3页
第3页 / 共44页
第3章 数据结构t.doc_第4页
第4页 / 共44页
第3章 数据结构t.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、28第 3 章 数据结构3 1 数据结构的基本概念一、课后部分习题答案3-1 什么是算法?解答:算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。二、部分例题及解题思路 选择题1. 数据结构是指( ) 。A.数据元素的组织形式 B.数据类型C.数据存储结构 D.数据定义2. 数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为( ) 。A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构3. 树形结构是数据元素之间存在一种( ) 。A.一对一关系 B.多对多关系 C.多

2、对一关系 D.一对多关系4. 设语句 x+的时间是单位时间,则以下语句的时间复杂度为( ) 。for(i=1; i=0)return (i);5. fact(n) if(nsqrt(n) printf(“%d is a prime number“, n) else printf(“%d is not a prime number“, n);/* prime */317 float sum1(int n)/* 计算 1!+2!+n! */p=1; sum1=0;for (i=1; ij) x=ai;ai=ak;ak=x;/* sort */10void matrimult(amn,bnl,cml

3、,int m,int n,int l)/* a 为 mn 阶的矩阵,b 为 nl 阶的矩阵,c 为 ml 阶的矩阵 */* 计算 c=a*b */for (i=1; irear QU-front = = m0 B、QU-rear QU-front 1= = m0 C、QU-front = = QU-rear D、QU-front = = QU-rear+1答案:A解:队满条件是元素个数为 m0。由于约定满队时队首指针与队尾指针相差 1,所以不必再减 1 了,应当选 A。当然,更正确的答案应该取模,即:QU-front = = (QU-rear+1)% m024数组用来表示一个循环队列,为当前队

4、列头元素的前一位置,为队尾元素的位置,假定队列中元素的个数小于,计算队列中元素的公式为( )A、rf; B、 (nfr )% n; C、nrf; D、 (nr f)% n答案:D25. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。设有 4 个数据元素 a1、a2 、a3 和 a4,对他们分别进行栈操作或队操作。在进栈或进队操作时,按 a1、a2 、a3 、a4 次序每次进入一个元素。假设栈或队的初始状态都是空。现要进行的栈操作是进栈两次,出栈一次,再进栈两次,出栈一次;这时,第一次出栈得到的元素是 1 ,第二次出栈得到的元素是 2 是;类似地,考虑

5、对这四个数据元素进行的队操作是进队两次,出队一次,再进队两次,出队一次;这时,第一次出队得到的元素是 3 ,第二次出队得到的元素是 4 。经操作后,最后在栈中或队中的元素还有 5 个。供选择的答案:1D:A、a1 B、a2 C、 a3 D、a4E: A、1 B、2 C、 3 C、 0答案:12345B,D,A,B,B26. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。栈是一种线性表,它的特点是 A 。设用一维数组 A1,n来表示一个栈,An为栈底,用整型变量 T 指示当前栈顶位置,AT为栈顶元素。往栈中推入(PUSH)一个新元素时,变量 T 的值

6、B ;从栈中弹出(POP )一个元素时,变量 T 的值 C 。设栈空时,有输入序列 a,b,c ,经过 PUSH,POP ,PUSH,PUSH,POP 操作后,从栈中弹出的元素的序列是 D ,变量 T 的值是 E 。供选择的答案:A、 先进先出 后进先出 进优于出 出优于进 随机进出B,C: 加 1 减 1 不变 清 0 加 2 减 2D: a,b b,c c,a b,a c,b a,cE: n+1 n+2 n n-1 n-2答案:ABCDE= 2, 2, 1, 6, 4注意,向地址的高端生长,称为向上生成堆栈;向地址低端生长叫向下生成堆栈,本题中底部为 n,向地址的低端递减生成,称为向下生成

7、堆栈。27. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写36在答卷的对应栏内。在做进栈运算时,应先判别栈是否 A ;在做退栈运算时,应先判别栈是否 B 。当栈中元素为 n 个,做进栈运算时发生上溢,则说明该栈的最大容量为 C 。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 D 分别设在这片内存空间的两端,这样,只有当 E 时,才产生上溢。供选择的答案:A,B: 空 满 上溢 下溢C: n-1 n n+1 n/2D: 长度 深度 栈顶 栈底E:两个栈的栈顶同时到达栈空间的中心点 其中一个栈的栈顶到达栈空间的中心点 两个栈的

8、栈顶在达栈空间的某一位置相遇 两个栈均不空,且一个栈的栈顶到达另一个栈的栈底答案:ABCDE2, 1, 2, 4, 328.试比较顺序存储结构和链式存储结构的优缺点。在什么情况下用顺序表比链表好?答: 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一) ;要求内存中可用存储单元的地址必须是连续的。优点:存储密度大,存储空间利用率高。缺点:插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小( a.length ) return INFEASIBLE

9、改为:if ( !( 0=i+1; j-) a.elemj-1 = a.elemj;改为 for (j=i+1; j = a.length; j+) a.elemj-1 = a.elemj;31. 编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针 P 指向该链表的第一个结点) 。 解:编写 C 程序如下:全局变量及函数提前说明:-#include#includeStatus DeleteK(SqList /参数不合法elsefor(count = 1; count =i+1; j-) a.elemj-1 = a.elemj;a.length - -;

10、return OK; / DeleteK注:上题涉及的类型定义如下:# define LIST INIT SIZE 100# define LISTINCREMENT 10typedef struct Elem Type *elem; /存储空间基址Int length; /当前长度Int listsize; /当前分配的存储容量SqList;38typedef struct liuyuint data;struct liuyu*link;test;liuyu *p,*q,*r,*head;int m=sizeof(test);void main () /*第一步,从键盘输入整数,不断添加到链

11、表*/int i;head=(test*)malloc(m); /*m=sizeof(test);*/p=head; i=0;while (i!=-9999) printf(“/ninput an integer stop by -9999:“);scanf(“%d“,p-data=i; /* input data is saved */p-link=(test*)malloc(m); /*m=sizeof(test);*/q=p;p=p-link;q-link=NULL; /*原先用 p-link=NULL 似乎太晚!*/p=head; i=0; /*统计链表结点的个数并打印出来 */whi

12、le (p-link!=NULL)printf(“%d“,p-data);p=p-link;i+;printf(“n node number=%dn“, i-1); /*结点的个数不包括-9999*/32 请编写 26 个字母按特定字母值插入或删除的完整程序,可自行选用顺序存储或链表结构。答:#include /*全局变量及函数提前说明:*/#includetypedef struct liuyuchar data;struct liuyu*link;test;liuyu *p,*q,*r,*head;int L; /*元素的个数*/int m=sizeof(test);void build(

13、); /* 主函数中会被调用的函数应当预先说明 */void display();int insert_char(char,char); /*插入一个字母,在第字母 Y 之前,若无字母则加到末尾*/int delet_char(char); /* 删除元素 X,注意保存 X 的前趋元素指针! */*-*/void build() /*字母链表的生成*/int i;39head=(test*)malloc(m); /*m=sizeof(test);*/p=head;for(i=1;idata=i+a-1; /* a也可用其 ASCII 码 97 来表示 */p-link=(test*)mallo

14、c(m); /*m=sizeof(test);*/p=p-link; p-data=i+a-1;p-link=NULL;/*-*/void display() /*字母链表的输出 */p=head;while (p-link!=NULL) printf(“%c“,p-data);p=p-link; printf(“%cn“,p-data);/*-*/int insert_char(char X,char Y) /*插入一个字母 X 在某个字母 Y 之前,若找不到 Y 字母则加到末尾*/p=head;r=(test*)malloc(m);r-data=X;if(head-data=Y) head

15、=r;r-link=p; else while(p-data!=Y) p=p-link;if(p-data=Y) q-link=r; r-link=p; elsep-link=r;r-link=NULL;L+;return(0);/*-*/int delet_char(char X) /* 删除元素 X,注意保存 X 的前趋元素指针! */ p=head;if(head-data=X)head=head-link;free(p);else while(p-data!=X)p=p-link;if(p-data=X) q-link=p-link;free(p); else return(-1);4

16、0L-;return(0);/*-*/void main(void) /*字母线性表的生成和输出*/ L=26;build();display();printf(“insert return value=%dn“,insert_char(L,W);display();printf(“delete return value=%dn“,delet_char(z);display();附:屏幕上显示的执行结果是:a b c d e f g h i j k l m n o p q r s t u v w x y zinsert return value=0a b c d 9 e f g h i j k

17、 l m n o p q r s t u v w x y z Ldelete return value=0a b c d e f g h i j k l m n o p q r s t u v w x y L33 数组二、课后部分习题答案3-9 假设按行优先存储整数数组 A98时,第一个元素的字节地址是 100,每个整数占 4个字节。求下列元素的存储地址:(1)A00 (2)A11 (3)A35 (4)A87解答:根据题目意思,一个以行优先存储的 m*n 二维数据的 Aij 元素地址按下述公式计算:Loc(Aij )=Loc(A00)+(i*n+j)*L,此处 L=4所以 A00 就是第一个元

18、素,它的地址是 100。A11 的地址根据公式有:Loc(A11 )=Loc (A00)+(1*8+1)*4=100+9*4=136 。A35 的地址根据公式有:Loc(A35 )=Loc (A00)+(3*8+5)*4=100+29*4=216 。A87 的地址根据公式有:Loc(A87 )=Loc (A00)+(8*8+7)*4=100+71*4=384 。3-12 什么是稀疏矩阵?稀疏矩阵的存储方法有哪几种?解答:设矩阵 Amn 中有 s 个非零元素,若 s 远远小于矩阵元素的总数(即 s0)个结点的完全二叉树的深度为( )A、log 2(n) B、 log 2(n) C、 log2(n

19、) +1 D、 log2(n)+1答案:C注 1:x 表示不小于 x 的最小整数; x表示不大于 x 的最大整数,它们与 含义不同!注 2:选 A 是错误的。例如当 n 为 2 的整数幂时就会少算一层。似乎 log 2(n) +1是对的?4把一棵树转换为二叉树后,这棵二叉树的形态是( )A、唯一的 B、有多种C、有多种,但根结点都没有左孩子 D、有多种,但根结点都没有右孩子答案:A5.从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。树是结点的有限集合,它_A_ 根结点,记为 T。其余的结点分成为 m(m 0)个 B 的集合 T1,T2,Tm ,每个集合

20、又都是树,此时结点 T 称为 Ti 的父结点,T i 称为 T 的子结点(1im) 。一个结点的子结点个数为该结点的 C 。供选择的答案A: 有 0 个或 1 个 有 0 个或多个 有且只有 1 个 有 1 个或 1 个以上 B: 互不相交 允许相交 允许叶结点相交 允许树枝结点相交C: 权 维数 次数(或度) 序答案:ABC1,1,3436. 从供选择的答案中,选出应填入下面叙述 ? 内的最确切的解答,把相应编号写在答卷的对应栏内。二叉树 A 。在完全的二叉树中,若一个结点没有 B ,则它必定是叶结点。每棵树都能惟一地转换成与它对应的二叉树。由树转换成的二叉树里,一个结点 N 的左子女是N

21、在原树里对应结点的 C ,而 N 的右子女是它在原树里对应结点的 D 。供选择的答案A: 是特殊的树 不是树的特殊形式 是两棵树的总称 有是只有二个根结点的树形结构 B: 左子结点 右子结点 左子结点或者没有右子结点 兄弟CD: 最左子结点 最右子结点 最邻近的右兄弟 最邻近的左兄弟 最左的兄弟 最右的兄弟答案:ABCDE2,1,1,37试写出如图所示的二叉树分别按先序、中序、后序遍历时得到的结点序列。答案:DLR:A B D F J G K C E H I L MLDR: B F J D G K A C H E L I MLRD:J F K G D B H L M I E C A8.把如图所

22、示的树转化成二叉树。解答:注意全部兄弟之间都要连线(包括度为 2 的兄弟),并注意原有连线结点一律归入左子树,新添连线结点一律归入右子树。449. 已知一棵树边的集合为, , , , , ,请画出这棵树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶子结点?(3)哪个是结点 g 的双亲?(4)哪些是结点 g 的祖先?(5)哪些是结点 g 的孩子?(6)哪些是结点 e 的孩子?(7)哪些是结点 e 的兄弟?哪些是结点 f 的兄弟?(8)结点 b 和 n 的层次号分别是什么?(9)树的深度是多少?(10)以结点 c 为根的子树深度是多少?解答:根据给定的边确定的树如图所示。其中根结点为 a;叶

23、子结点有:d、m、n、j、k、f、l;c 是结点 g 的双亲;a、c 是结点 g 的祖先;j、k 是结点 g 的孩子;m、n 是结点 e 的子孙;e 是结点 d 的兄弟;g、h 是结点 f 的兄弟;结点 b 和 n 的层次号分别是 2 和 5;树的深度为 5。10. 一棵度为 2 的树与一棵二叉树有何区别。解答:度为 2 的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树不能交换。11. 试分别画出具有 3 个结点的树和二叉树的所有不同形态?解答:略。12. 已知用一维数组存放的一棵完全二叉树:ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。解

24、答:先序序列:ABDHIEJKCFLG中序序列:HDIBJEKALFCG后序序列:HIDJKEBLFGCA13. 一棵深度为 H 的满 k 叉树有如下性质:第 H 层上的结点都是叶子结点,其余各层上每个结点都有 k 棵非空子树,如果按层次自上至下,从左到右顺序从 1 开始对全部结点编号,回答下列问题:ab cd e g f him nj k i45(1)各层的结点数目是多少?(2)编号为 n 的结点的父结点如果存在,编号是多少?(3)编号为 n 的结点的第 i 个孩子结点如果存在,编号是多少?(4)编号为 n 的结点有右兄弟的条件是什么?其右兄弟的编号是多少?解答:(1)第 i 层上的结点数目

25、是 mi-1。(2)编号为 n 的结点的父结点如果存在,编号是(n-2)/m)+1。(3)编号为 n 的结点的第 i 个孩子结点如果存在,编号是(n-1)*m+i+1 。(4)编号为 n 的结点有右兄弟的条件是(n-1)%m0。其右兄弟的编号是 n+1。14. 找出所有满足下列条件的二叉树:(1)它们在先序遍历和中序遍历时,得到的遍历序列相同;(2)它们在后序遍历和中序遍历时,得到的遍历序列相同;(3)它们在先序遍历和后序遍历时,得到的遍历序列相同;解答:(1)先序序列和中序序列相同的二叉树为:空树或者任一结点均无左孩子的非空二叉树;(2)中序序列和后序序列相同的二叉树为:空树或者任一结点均无

26、右孩子的非空二叉树;(3)先序序列和后序序列相同的二叉树为:空树或仅有一个结点的二叉树。15给定一组权值(5,9,11,2,7,16) ,试设计相应的哈夫曼树。解答:构造而成的哈夫曼树如图所示。35 图二、课后部分习题答案3-22答:深度优先遍历序列为:V1-V3-V6-V7-V4-V2-V5-V8广度优先搜索遍历序列为:V1-V3-V4-V6-V7-V2-V5-V6三、部分例题及解题思路1. 在一个图中,所有顶点的度数之和等于图的边数的( )倍。A、1/2 B、 1 C、 2 D、 4 答案:C50920 3011 16147 72 5462. 在一个有向图中,所有顶点的入度之和等于所有顶点

27、的出度之和的( )倍。A、1/2 B、 1 C、 2 D、 4 答案:B3. 有 8 个结点的无向图最多有( )条边。A、14 B、 28 C、56 D、112 答案:B解析:在一个图中,如果任意两个结点之间都有一条边直接相连接则称该图为完全无向图,此时的无向图具有最多的边数:n(n-1)/2。4. 有 8 个结点的无向连通图最少有( )条边。A、5 B、6 C、7 D、8 答案:C 5. 有 8 个结点的有向完全图有( )条边。A、14 B、28 C、56 D、112 答案:C6. 用邻接表表示图进行广度优先遍历时,通常是采用( )来实现算法的。A、栈 B、队列 C、树 D、图 答案:B7.

28、 用邻接表表示图进行深度优先遍历时,通常是采用( )来实现算法的。A、栈 B、队列 C、树 D、图 答案:A8. 已知图的邻接矩阵,根据算法思想,则从顶点 0 出发按深度优先遍历的结点序列是( )答案:C9. 已知图的邻接矩阵同上题 8,根据算法,则从顶点 0 出发,按深度优先遍历的结点序列是( )A、 0 2 4 3 1 5 6 B、 0 1 3 5 6 4 2 C、 0 4 2 3 1 6 5 D、0 1 3 4 2 5 6答案:DA、0 2 4 3 1 5 6B、0 1 3 6 5 4 2C、0 1 3 4 2 5 6D、3 6 1 5 4 201100104710. 已知图的邻接矩阵同

29、上题 8,根据算法,则从顶点 0 出发,按广度优先遍历的结点序列是( )A、 0 2 4 3 1 6 5 B. 0 1 3 5 6 4 2 C. 0 1 2 3 4 6 5 D. 0 1 2 3 4 5 6答案:C11. 已知图的邻接表如下所示,根据算法,则从顶点 0 出发按深度优先遍历的结点序列是( )答案:D12. 已知图的邻接表如下所示,根据算法,则从顶点 0 出发按广度优先遍历的结点序列是( )答案:A13深度优先遍历类似于二叉树的( )A、先序遍历 B、中序遍历 C、后序遍历 D、层次遍历答案:A14广度优先遍历类似于二叉树的( )A、先序遍历 B、中序遍历 C、后序遍历 D、层次遍

30、历答案:D15任何一个无向连通图的最小生成树( )A、只有一棵 B、一棵或多棵 C、一定有多棵 D、可能不存在答案:A生成树不唯一,但最小生成树唯一,即边权之和或树权最小的情况唯一。16知如图所示的有向图,请给出该图的:(1) 每个顶点的入/出度;(2) 邻接矩阵;(3) 邻接表;(4) 逆邻接表。A、0 1 3 2 B、0 2 3 1 C、0 3 2 1 D、0 1 2 3A、0 3 2 1 B、0 1 2 3 C、0 1 3 2 D、0 3 1 248解答:17下列哪一种图的邻接矩阵是对称矩阵?( )A有向图 B无向图 CAOV 网 DAOE 网答案:B18设无向图的顶点个数为 n,则该图

31、最多有( )条边。An-1 Bn(n-1)/2 C n(n+1)/2 D0 En 2答案:B19无向图 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), 对该图进行深度优先遍历,得到的顶点序列正确的是( ) 。Aa,b,e,c,d,f Ba,c,f,e,b,d Ca,e,b,c,f,d Da,e,d,f,c,b答案:D20. 下列说法不正确的是( ) 。A 图的遍历是从给定的源点出发每一个顶点仅被访问一次 B 图的深度遍历不适用于有向图 C 遍历的基本算法有两种:深度遍历和广度遍历 D 图的深度遍历是一

32、个递归过程答案:B21图中有关路径的定义是( ) 。A由顶点和相邻顶点序偶构成的边所形成的序列 B由不同顶点所形成的序列49C由不同边所形成的序列 D上述定义都不是答案: A22一个 n 个顶点的连通无向图,其边的个数至少为( )。An-1 Bn Cn+1 Dnlogn答案:A23要连通具有 n 个顶点的有向图,至少需要( )条边。An-l Bn Cn+l D2n答案:B24n 个结点的完全有向图含有边的数目( ) 。An*n n(n) Cn2 Dn*(nl)答案:D25一个有 n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。A0 B1 Cn-1 Dn答案:B D26 从邻接矩

33、 阵可以看出,该图共有()个顶点;如果是有向图该图共有() 条弧;如果是无向图,则共有()条边。A9 B3 C6 D1 E以上答案均不正确A5 B4 C3 D2 E以上答案均不正确A5 B4 C3 D2 E以上答案均不正确答案::B :B :D27当一个有 N 个顶点的图用邻接矩阵 A 表示时,顶点 Vi 的度是( )。Anij1,Bn1j,iCnij1,D nijA1,+ n1ji,答案:B28. 下列说法不正确的是( ) 。A图的遍历是从给定的源点出发每一个顶点仅被访问一次B遍历的基本算法有两种:深度遍历和广度遍历C图的深度遍历不适用于有向图D图的深度遍历是一个递归过程答案: C29. 设

34、图如下所示,在下面的 5 个序列中,符合深度优先遍历的序列有多少?( )050abed cfa e b d f c a c f d e b a e d f c ba e f d c b a e f d b cA5 个 B4 个 C3 个 D2 个 答案:D第 29 题图 第 30 题图30.下图中给出由 7 个顶点组成的无向图。从顶点 1 出发,对它进行深度优先遍历得到的序列是( ),而进行广度优先遍历得到的顶点序列是( ) 。:A1354267 B1347652 C1534276 D1247653 E以上答案均不正确:A1534267 B1726453 Cl354276 D1247653 E

35、以上答案均不正确 答案:C : C31.已知一个图如下所示。则由该图得到的一种拓扑序列为( ) 。Av1,v4,v6,v2,v5,v3 Bv1,v2,v3,v4,v5,v6Cv1,v4,v2,v3,v6,v5 Dv1,v2,v4,v6,v3,v5 答案:A解析:此题要求掌握拓扑排序的具体步骤:在有向图中选择一个没有前驱的顶点并输出,在有向图中删除该顶点以及从它出发的弧,重复以上步骤直至有向图变空。可得到 A 的序列。32.从供选择的答案中选出正确答案填入下面叙述的()中。如图是带权的有向图 G 的邻接表表示法。以结点 V1 出发深度遍历图 G 所得的结点序列为1 V12 V23 V34 V45

36、 V56 V67 V78 V81 2 3 4 5 第 31 题图6 6 50 4 11 2 6 4 13 43 5 68 85 123 38 7 245 1 7 128 20第 32 题图51V1V2 V3V4V5V6 V7V86111 643388202412150( ) ;广度遍历图 G 所得的结点序列是( ) ;G 的一个拓扑序列是( ) ;从结点 V1 到结点 V8 的最短路径是( ) ;从结点 V1 到 V8 的关键路径是( ) 。-: A.V1,V2,V3,V4,V5,V6,V7,V8B. V1,V2,V4,V6,V5,V3,V7,V8C. V1,V2,V4,V6,V3,V5,V7

37、,V8D. V1,V2,V4,V6, V7,V3,V5, V8E. V1,V2,V3,V8,V4,V5,V6,V7F. V1,V2,V3,V8,V4,V5,V7,V6G. V1,V2,V3,V8,V5,V7,V4,V6-:A.(V1,V2,V4,V5,V3,V8)B. (V1,V6,V5,V3,V8) C. (V1,V6,V7,V8)D. (V1,V2,V5,V7,V8)答案: :G :C :B : D :B解析:根据题中给出的邻接表,可以画出相应的图,如下图所示。依该图的特点(只有一个入度为 0 的顶点) ,取 v1为出发点,访问此结点,然后依次从 v1 的未被访问的邻接点出发进行深度优先遍

38、历,直至图中所有和 v1 有路径相通的结点都被访问到。若此时图中尚有结点未访问到,则另选图中一个未被访问过的结点做起始点,重复上述过程,直至图中所有几点都被访问为止。因此,图的深度优先遍历为:v1,v2,v3,v8,v5,v7,v4,v6。通常深度优先遍历的结果不是唯一的。但从供选择的答案中选取的答案只有 G 才是深度优先遍历的结果。对于其它问题,只要依邻接表画出了相应有向图,问题就比较容易解答。33.判定一个有向图是否存在回路,除了可以利用拓扑排序的方法外,还可以利用( ) 。A.求关键路径的方法 B.求最短路径的方法 C.深度优先遍历法 D.广度优先遍历算法 答案:C。解析:此题要求对以上

39、各种方法了解。34. 在 n 个结点的无向图中,若边数大于 n-1,则该图必是连通图。 ( )答:错。不一定是连通图,可能有若干连通分量。35. 有向图的邻接矩阵是对称的。 ( )答:错。只有有向完全图的邻接矩阵是对称的。36. AOV 网的含义是以边表示活动的网。 ( )答:错。 AOV 网是用顶点代表活动,弧表示活动间的优先关系的有向图,叫顶点表示活动的网。37. 邻接矩阵适用于有向图和无向图的存储,但不能存储带权的有向图和无向图,而只能使用邻接表存储形式来存储它。 ( )52答:错。邻接矩阵中元素值可以存储权值。38.树中的结点和图中的顶点就是指数据结构中的数据元素。( )答:对。39.

40、 有 n 个顶点的无向图, 采用邻接矩阵表示, 图中的边数等于邻接矩阵中非零元素之和的一半。 ( )答:对。40. 无向图的邻接矩阵一定是对称矩阵,有向图的邻接矩阵一定是非对称矩阵。 ( )答:错。只有有向完全图的邻接矩阵是对称的41. 用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小与图中结点个数有关,而与图的边数无关。 ( )答:对。42.存储无向图的相邻矩阵是对称的,因此只要存储相邻矩阵的下(或上)三角部分就可以了。 ( )答:对。43. 一个有向图的邻接表和逆邻接表中结点的个数可能不等。 ( )答:错。44.有 e 条边的无向图,在邻接表中有 e 个结点。 ( )

41、答:错。若无向图中有 n 个顶点,e 条边,则它的临接表需 n 个头结点和 2e 个表结点。45. 有向图中顶点 V 的度等于其邻接矩阵中第 V 行中的 1 的个数。 ( )答:错。46. 连通分量指的是有向图中的极大连通子图。 ( )答:错。无向图的极大连通子图称为连通分量。47. 一个图的广度优先搜索树是唯一的。 ( )答:错。48.图的深度优先搜索序列和广度优先搜索序列不是唯一的。 ( )答:对49.有回路的图不能进行拓扑排序。 ( )答:对50.在一个图 G 的邻接表表示中,每个顶点的邻接表中所含的结点数,对于有向图而言等于该顶点的 出度数 ;而对于无向图而言等于该顶点的 度数 。53

42、51.一个无向图有 n 个顶点和 e 条边,则所有顶点的度的和为 2e 。52.若无向图 G 的顶点度数的最小值大于或等于 顶点个数 n 时,G 至少有一条回路。53.在一个具有 n 个顶点的无向完全图中,包含有 n(n-1)/2 条边;在一个具有 n 个顶点的有向完全图中,包含有 n(n-1) 条边。54.有向图的极大强连通子图称为 有向图的强连通分量 。55. 根据图的存储结构进行某种次序的遍历,得到的顶点序列是 唯一 的。 36 查找二、课后部分习题答案3-24答:查找 b 的过程 0 1 2 3 4 5 6 7 8 9a c e f g j k m nLow=1 mid=5 High=

43、9ba 未找到。查找 k 的过程0 1 2 3 4 5 6 7 8 9a c e f g j k m nLow=1 mid=5 High=9kg Low=6 mid=7 High=9k=k 找到。3-28答:考虑每个字串的第一个字符,若取 p=17 则H(key)=key(第一个字母的 ASCII 码 mod 17)H(Jan)=74 mod 17=6 H(Feb)=70 mod 17=2 H(Mar)=77 mod 17=9H(Apr)=65 mod 17= 14 H(May)=77mod 17= 9 H(June)=74 mod 17= 6H(July)=74 mod 17= 6 H(Au

44、g)=65 mod 17= 14 H(Sep)=83 mod 17= 15H(Oct)=79 mod 17= 11 H(Nov)=78 mod 17= 10 H(Dec)=68 mod 17= 054用线性探测法处理冲突,建表如下图所示。Hi=(Hash(key)+di) mod m (1im) di=i0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Dec Feb Jan June July Mar May Oct Nov Apr Aug Sep关键字 Jan Feb Ma Apr Oct Dec 均是由哈希函数得到没有冲突的哈希地址而直接存入的;关键字 May June July Aug Sep Nov 在哈希地址上有冲突,由 Hi 找到空的哈希地址。用链地址法处理冲突,建表如下图所示。012345678910111213141516三、部分例题及解题思路1在表长为的链表中进行线性查找,它的平均查找长度为( )、ASL 、ASL (n1)/2 、ASL 、ASLlog2(n1)n1答案:B2折半查找有序表(4,6,10,12,20,30,50,70,88,100) 。若查找表中元素 58,则它将依次与

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报