数据结构习题课第8、7、6章(网上的答案有些有问题的)

合集下载

《数据结构》吕云翔编著第8章查找习题解答

《数据结构》吕云翔编著第8章查找习题解答

第8 章查找课后习题解答

一、选择题

1.已知一个有序表为(12,18,24,35,47,50,62,83,90,115,134),当折半查找值为90的元素时,经过()次比较后查找成功。

A 2

B 3

C 4

D 5

【解答】A

2.已知10个元素(54,28,16,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序树,查找值为62的结点所需比较次数为()。

A 2

B 3

C 4

D 5

【解答】B

3.已知数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树,则该树的深度为()。

A 4

B 5

C 6

D 7

【解答】B

4.按()遍历二叉排序树得到的序列是一个有序序列。

A 前序

B 中序

C 后序

D 层次

【解答】B

5一棵高度为h的平衡二叉树,最少含有个结点。

A 2h

B 2 h -1

C 2 h +1

D 2 h -1

【解答】D

6.在散列函数H(k)= k mod m中,一般来讲,m应取()。

A 奇数

B 偶数

C 素数

D 充分大的数

7.静态查找与动态查找的根本区别在于()。

A 它们的逻辑结构不一样

B 施加在其上的操作不同

C 所包含的数据元素的类型不一样

D 存储实现不一样

【解答】B

【分析】静态查找不涉及插入和删除操作,而动态查找涉及插入和删除操作。

8. 长度为 12的有序表采用顺序存储结构,采用折半查找技术,在等概率情况下,查找成功时的平均查找长度是(),查找失败时的平均查找长度是()。

A 37/12

B 62/13

C 3 9/12

D 49/13

【解答】A,B

数据结构各章习题及答案

数据结构各章习题及答案

数据结构习题及解答第1章 概述【例1-1】分析以下程序段的时间复杂度。for(i=0;i<n;i++)for(j=0;j<m;j++) A[i][j]=0;解:该程序段的时间复杂度为O (m*n )。【例1-2】分析以下程序段的时间复杂度。i=s=0; ①while(s<n){ i++; ②

s+=i; ③}解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O (1)。语句②和语句③构成while 循环语句的循环体,它们的执行次数由循环控制条件中s 与n 的值确定。假定循环重复执行x 次后结束, 则语句②和语句③各重复执行了x 次。其时间复杂度按线性累加规则为O (x )。此时s 与n 满足关系式:s ≥n ,而s=1+2+3+…+x 。所以有:

1+2+3+…+x ≥n ,可以推出:x=n n 241212811+±-=+±-x 与n 之间满足x=f(n ),所以循环体的时间复杂度为O (n ),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O (n )。

【例1-3】分析以下程序段的时间复杂度。i=1; ①while(i<=n) i=2*i; ②解:其中语句①的执行次数是1,设语句②的执行次数为f (n ),则有:n n f ≤)(2。

得:T(n)=O(

n

2 log)

【例1-4】有如下递归函数fact(n),分析其时间复杂度。

fact(int n)

{ if(n<=1)

return(1); ①

else

return(n*fact(n-1)); ②

数据结构章节练习题 - 答案第7章 图

数据结构章节练习题 - 答案第7章 图

7.1选择题

1.对于一个具有n个顶点和e条边的有向图,在用邻接表表示图时,拓扑排序算法时间复杂度为()

A)O(n)B)O(n+e)C)O(n*n)D)O(n*n*n)

【答案】B

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

A)n-1B)n(n-1)/2C)n(n+1)/2

【答案】B

3.连通分量指的是()

A)无向图中的极小连通子图

B)无向图中的极大连通子图

C)有向图中的极小连通子图

D)有向图中的极大连通子图

【答案】B

4.n个结点的完全有向图含有边的数目()

A)n*n B)n(n+1)C)n/2

【答案】D

5.关键路径是()

A)AOE网中从源点到汇点的最长路径

B)AOE网中从源点到汇点的最短路径

C)AOV网中从源点到汇点的最长路径D)n2

D)n*(n-1)

D)AOV网中从源点到汇点的最短路径

【答案】A

6.有向图中一个顶点的度是该顶点的()

A)入度B)出度C)入度与出度之和D)(入度+出度)/2

【答案】C

7.有e条边的无向图,若用邻接表存储,表中有()边结点。A)e B)2eC)e-1D)2(e-1)

【答案】B

8.实现图的广度优先搜索算法需使用的辅助数据结构为()

A)栈B)队列C)二叉树D)树

【答案】B

9.实现图的非递归深度优先搜索算法需使用的辅助数据结构为()A)栈B)队列C)二叉树D)树

【答案】A

10.存储无向图的邻接矩阵一定是一个()

A)上三角矩阵B)稀疏矩阵C)对称矩阵D)对角矩阵

【答案】C

11.在一个有向图中所有顶点的入度之和等于出度之和的()倍A)B)1C)2D)4

【答案】B

南邮_数据结构课后习题答案讲解

南邮_数据结构课后习题答案讲解

2020/2/8
9
第四章 习题讲解
4-1. 设线性表采用顺序表示方式,并假定顺序表是 有序的(设 表中元素已按非递减次序排列 )。编写 函数,实现线性表的如下运算:
(1)int Search_Insert(List *lst,T x)
后置条件:在有序的顺序表中搜索元素 x。
?若x在表中,则 返回x在表中的位置 。
2020/2/8
16
6-5. 找出所有二叉树,其节点在下列两种次序下 恰好都以同样的次序出现: (1)先序和中序;( 2)先序和后序;( 3)中 序和后序
(1)或者为空二叉树,或者所有结点的左子树都 是空的单支树 (2)或者为空二叉树,或者只有根结点的二叉树 (3)或者为空二叉树,或者所有结点的右子树都 是空的单支树
(2)void Search_Delete(List *lst, T x,T y)
前置条件: x<y
后置条件:删除有序表中元素值在 x和y之间( 含x和y)的所有元素。
2020/2/8
12
void Search_Delete(List *lst, T x, T y)
{
if (lst->Size==0) { printf(“The list is empty”); return -1; }
第一章 习题讲解
1-19.确定下列各程序段的程序步,确定划线语句的执行次 数,计算它们的渐近时间复杂度。 (1) i=1; k=0;

(完整版)数据结构与算法第8章答案

(完整版)数据结构与算法第8章答案

第8 章排序技术

课后习题讲解

1. 填空题

⑴排序的主要目的是为了以后对已排序的数据元素进行()。

【解答】查找

【分析】对已排序的记录序列进行查找通常能提高查找效率。

⑵对n个元素进行起泡排序,在()情况下比较的次数最少,其比较次数为()。在()情况下比较次数最多,其比较次数为()。

【解答】正序,n-1,反序,n(n-1)/2

⑶对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。

【解答】3

【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。

⑷对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。

【解答】3

⑸对n个待排序记录序列进行快速排序,所需要的最好时间是(),最坏时间是()。

【解答】O(nlog2n),O(n2)

⑹利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为()。

【解答】n-1

⑺如果要将序列(50,16,23,68,94,70,73)建成堆,只需把16与()交换。

【解答】50

⑻对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为()的结点开始。

【解答】60

【分析】60是该键值序列对应的完全二叉树中最后一个分支结点。

2. 选择题

⑴下述排序方法中,比较次数与待排序记录的初始状态无关的是()。

A插入排序和快速排序B归并排序和快速排序

数据结构课后习题(第6章)

数据结构课后习题(第6章)

【课后习题】第6章树和二叉树

网络工程2010级()班学号:姓名:

一、填空题(每空1分,共16分)

1.从逻辑结构看,树是典型的。

2.设一棵完全二叉树具有999个结点,则此完全二叉树有个叶子结点,有

个度为2的结点,有个度为1的结点。

3.由n个权值构成的哈夫曼树共有个结点。

4.在线索化二叉树中,T所指结点没有左子树的充要条件是。

5.在非空树上,_____没有直接前趋。

6.深度为k的二叉树最多有结点,最少有个结点。

7.若按层次顺序将一棵有n个结点的完全二叉树的所有结点从1到n编号,那么当i为

且小于n时,结点i的右兄弟是结点,否则结点i没有右兄弟。

8.N个结点的二叉树采用二叉链表存放,共有空链域个数为。

9.一棵深度为7的满二叉树有___ ___个非终端结点。

10.将一棵树转换为二叉树表示后,该二叉树的根结点没有。

11.采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的遍历结

果是一样的。

12.一棵Huffman树是带权路径长度最短的二叉树,权值的外结点离根较远。

二、判断题(如果正确,在对应位置打“√”,否则打“⨯”。每题0.5分,共5分)

1.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i-1个结点。

2.二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该二叉树的根结点

是那一个,则可以确定这棵二叉树。

3.一棵树中的叶子结点数一定等于与其对应的二叉树中的叶子结点数。

4.度≤2的树就是二叉树。

5.一棵Huffman树是带权路径长度最短的二叉树,权值较大的外结点离根较远。

数据库复习题5,6,7,8章(附答案)

数据库复习题5,6,7,8章(附答案)

第5章数据库完整性

一、选择题:

1、在数据库系统中,保证数据及语义正确和有效的功能是(D)A.并发控制B.存取控制

C.安全控制

D.完整性控制

2、关于主键约束以下说法错误的是(C)

A.一个表中只能设置一个主键约束

B.允许空值的字段上不能定义主键约束

C.允许空值的字段上可以定义主键约束

D.、可以将包含多个字段的字段组合设置为主键

3、在表或视图上执行除了(D)以外的语句都可以激活触发器。

A.Insert

B. Delete

C. Update

D.Create

4、数据库的__B__是指数据的正确性和相容性。

A.安全性B.完整性C.并发控制D.恢复

5、在数据库的表定义中,限制成绩属性列的取值在0到100的范围内,属于数据的_____C___约束。

A、实体完整性

B、参照完整性

C、用户自定义

D、用户操作

二、填空题

1.数据库的完整性是指数据的①实体完整性.②参照完整性__和③用户定义完整性。

2、实体完整性是指在基本表中,。答案:主属性不能取空值

3、参照完整性是指在基本表中,。答案:外码可以是空值或者另一个关系主码的有效值

4、为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS 就。答案:拒绝此操作

第6章关系数据理论

一、选择题

1、关系规范化中的删除操作异常是指①A ,插入操作异常是指② D。

A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删

除 D.应该插入的数据未被插入

2、设计性能较优的关系模式称为规范化,规范化主要的理论依据是A。

A.关系规范化理论 B.关系运算理论 C.关系代数理论 D.数理逻辑

数据结构习题课第8、7、6章(网上的答案有些有问题的)

数据结构习题课第8、7、6章(网上的答案有些有问题的)

第8章图

8.2 对于如图8.33 所示的无向图,试给出:

(1)图中每个顶点的度;

(2)该图的邻接矩阵;

(3)该图的邻接表;

(4)该图的连通分量。

(1) D(V0)=2;D(V1)=2;D(V2)=3;D(V3)=3;D(V4)=2;D(V5)=1;D(V6)=1.

(2)

0101000

1010000

0101100

1010100

0011000

0000001

0000010

v V

⎡⎤

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎣⎦

邻接矩阵

0101000

1010000

0101100

1010100

0011000

0000001

0000010

⎡⎤

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎢⎥

⎣⎦

(3)邻接表

(4)连通分量

1:

2:

8.5 图8.35 所示的是某个无向图的邻接表,试:(1)画出此图;

(2)写出从顶点A 开始的DFS 遍历结果;

(3)写出从顶点A 开始的BFS 遍历结果。

(1)图8.35 邻接表对应的无向图如图8.35.1 所示

(2)

从顶点A 开始的DFS 遍历,深度优先遍历的基本思想:对于给定的图

G=(V,E),首先将V中每一个顶点都标记为未被访问,然后,选取一个源点v V

将v标记为被访问,再递归地用深度优先搜索方法,依次搜索v的所有邻接点w.若w未曾访问过,则以w为新的出发点继续深度优先搜索遍历,如果从v出发所有路的顶点都已被访问过,则结束。

A,B,C,F,E,G,D

从顶点A 开始的BFS 遍历,基本思想:对于给定的图G=(V,E),从图中某未访问过的顶点vi出发:

1)访问顶点vi;

2)访问vi 的所有未被访问的邻接点w1 ,w2 , …wk ;

数据结构课后习题答案第六章

数据结构课后习题答案第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)

习题

一、选择题

1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。表示该遗传关系最适合的数据结构为( )。

A.向量

B.树C图 D.二叉树

2.树最合适用来表示( )。

A.有序数据元素 B元素之间具有分支层次关系的数据

C无序数据元素 D.元素之间无联系的数据

3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。

A. la (2b (3d,3e),2c)

B. a(b(D,e),c)

C. a(b(d,e),c)

D. a(b,d(e),c)

4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。

A. 2h_l

B.h C.2h-1 D. 2h

5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。

A. 2i

B. 2i-l

C. 2i+l

D. 2i+2

6.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为( )。

A.3

B.4

C.5

D.6

7.深度为5的二叉树至多有( )个结点。

A. 31

B. 32

C. 16

D. 10

8.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A. 15

B. 16

C. 17

D. 47

9.题图6-1中,( )是完全二叉树,( )是满二叉树。

10.在题图6-2所示的二叉树中:

(1)A结点是

A.叶结点 B根结点但不是分支结点

C根结点也是分支结点 D.分支结点但不是根结点

(2)J结点是

A.叶结点 B.根结点但不是分支结点

《数据结构》第八章习题参考答案 (1)

《数据结构》第八章习题参考答案 (1)
11、在图G的最小生成树T中,可能会有某条边的权值超过未选边的权值。(√)
二、单项选择题
1.具有4个顶点的无向完全(边数为n*(n-1)/2)图有(A)条边。
A.6B.12C.16D.20
2.下列哪一种图的邻接矩阵是对称矩阵?(B)
A.有向图B.无向图C.AOV网D.AOE网
3、在图采用邻接矩阵存储时,求最小生成树的Prim算法的时间复杂度为(C)。
3、G是一个非连通无向图,共有28条边,则该图至少有__9__个顶点。
4、在有n个顶点的有向图中,每个顶点的度最大可达_2(n-1)_____。
5、有N个顶点的有向图,至少需要量__N____条弧才能保证是连通的。
6、在图G的邻接表表示中,每个顶点邻接表中所含的结点数,对于无向图来说等于该顶点的__度__;对于有向图来说等于该顶点的__出度__。
5、课本P3928.4题
【解答】
用邻接矩阵表示图,矩阵元素的个数是顶点个数的平方,与边的条数无关。矩阵中非零元素的个数与边的条数有关。
6、课本P3928.5题
【解答】
一个图中有1000个顶点,其邻接矩阵中的矩阵元素有10002= 1000000个。它有1000个非零元素(对于有向图)或2000个非零元素(对于无向图),是稀疏矩阵。
邻接表表示时:无向图的任意顶点的度=顶点所对应边结点链表中结点个数;
有向图的任意顶点的度=邻接表中顶点所对应边链表中结点个数+逆邻接表中顶点所对应边链表中结点个数;

数据结构部分课后习题答案(耿国华)

数据结构部分课后习题答案(耿国华)

第一章绪论

一、问答题

1.什么是数据结构?

2.叙述四类基本数据结构的名称与含义。

3.叙述算法的定义与特性。

4.叙述算法的时间复杂度。

5.叙述数据类型的概念。

6.叙述线性结构与非线性结构的差别。

7.叙述面向对象程序设计语言的特点。

8.在面向对象程序设计中,类的作用是什么?

9.叙述参数传递的主要方式及特点。

10.叙述抽象数据类型的概念。

二、判断题(在各题后填写“√”或“×”)

1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。()

2.算法就是程序。()

3.在高级语言(如C或PASCAL)中,指针类型是原子类型。()

三、计算下列程序段中X=X+1的语句频度

for(i=1;i<=n;i++)

for(j=1;j<=i;j++)

for(k=1;k<=j;k++)

x=x+1;

【解答】

i=1时:1 = (1+1)×1/2 = (1+12)/2

i=2时:1+2 = (1+2)×2/2 = (2+22)/2

i=3时:1+2+3 = (1+3)×3/2 = (3+32)/2

i=n时:1+2+3+……+n = (1+n)×n/2 = (n+n2)/2

x=x+1的语句频度为:

f(n) = [ (1+2+3+……+n) + (12 + 22 + 32 + …… + n2 ) ] / 2

=[ (1+n)×n/2 + n(n+1)(2n+1)/6 ] / 2

=n(n+1)(n+2)/6

=n3/6+n2/2+n/3

区分语句频度和算法复杂度:

O(f(n)) = O(n3)

四、试编写算法,求一元多项式P n(x)=a0+a1x+a2x2+a3x3+…a n x n的值P n(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入a i(i=0,1,…,n),x和n,输出为P n(x0)。通常算法的输入和输出可采用下列两种方式之一:

数据结构答案第7章

数据结构答案第7章

第7 章查找技术

1970-01-01

第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

⑹在散列技术中,处理冲突的两种主要方法是()和()。

【解答】开放定址法,拉链法

⑺在各种查找方法中,平均查找长度与结点个数无关的查找方法是()。

数据结构(C语言版第2版)课后习题答案严蔚敏版

数据结构(C语言版第2版)课后习题答案严蔚敏版

数据结构(C语⾔版第2版)课后习题答案严蔚敏版

数据结构(C语⾔版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是⾃⼰认真做了再看

第1章 绪论

5.选择题

(1)在数据结构中,从逻辑上可以把数据结构分成( C )。

A.动态结构和静态结构 B.紧凑结构和⾮紧凑结构

C.线性结构和⾮线性结构 D.内部结构和外部结构

(2)与数据元素本⾝的形式、内容、相对位置、个数⽆关的是数据的( C )。

A.存储结构 B.存储实现

C.逻辑结构 D.运算实现

(3)通常要求同⼀逻辑结构中的所有数据元素具有相同的特性,这意味着( B )。

A.数据具有同⼀特点

B.不仅数据元素所包含的数据项的个数要相同,⽽且对应数据项的类型要⼀致

C.每个数据元素都⼀样

D.数据元素所包含的数据项的个数要相等

(4)以下说法正确的是( D )。

A.数据元素是数据的最⼩单位

B.数据项是数据的基本单位

C.数据结构是带有结构的各数据项的集合

D.⼀些表⾯上很不相同的数据可以有相同的逻辑结构

解释:数据元素是数据的基本单位,数据项是数据的最⼩单位,数据结构是带有结构的各数据元素的集合。

(5)算法的时间复杂度取决于( D )。

A.问题的规模 B.待处理数据的初态

C.计算机的配置 D.A和B

解释:算法的时间复杂度不仅与问题的规模有关,还与问题的其他因素有关。如某些排序的算法,其执⾏时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。

(6)以下数据结构中,( A )是⾮线性数据结构

A.树 B.字符串 C.队列 D.栈

数据结构(C++版)课后习题答案

数据结构(C++版)课后习题答案

后置条件:整数 a 的值不发生改变 endADT 7. 求多项式 A(x)的算法可根据下列两个公式之一来设计: ⑴ A(x)=anxn+an-1xn-1+…+a1x+a0 ⑵ A(x)=(…(anx+an-1)x+…+a1)x)+a0 根据算法的时间复杂度分析比较这两种算法的优劣。 【解答】第二种算法的时间性能要好些。第一种算法需执行大量的乘法运算,而第二种算法进行了优化, 减少了不必要的乘法运算。 8. 算法设计(要求:算法用伪代码和 C++描述,并分析最坏情况下的时间复杂度) ⑴ 对一个整型数组 A[n]设计一个排序算法。 【解答】下面是简单选择排序算法的伪代码描述。
⑸ x++是基本语句,所以
5.设有数据结构(D,R),其中 D={1, 2, 3, 4, 5, 6},R={(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}。 试画出其逻辑结构图并指出属于何种结构。 【解答】其逻辑结构图如图 1-3 所示,它是一种图结构。
⑹ 在由尾指针 rear 指示的单循环链表中,在表尾插入一个结点 s 的操作序列是( );删除开始结点的操 作序列为( )。 【解答】s->next =rear->next; rear->next =s; rear =s; q=rear->next->next; rear->next->next=q->next; delete q; 【分析】操作示意图如图 2-9 所示:

严蔚敏版数据结构课后习题集答案解析~完整版

严蔚敏版数据结构课后习题集答案解析~完整版

第1章绪论

1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。

1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3 设有数据结构(D,R),其中

{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图。

解:

1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版

第1章 绪论

5.选择题:CCBDCA

6.试分析下面各程序段的时间复杂度。.试分析下面各程序段的时间复杂度。 (1)O (1) (2)O (m*n ) (3)O (n 2) (4)O (log 3n )

(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O (n 2) (6)O(n )

第2章 线性表

1.选择题.选择题

babadbcabdcddac 2.算法设计题.算法设计题

(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。 ElemType Max (LinkList L ){

if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值假定第一个结点中数据具有最大值 p=L->next->next;

while(p != NULL ){//如果下一个结点存在

if(p->data > pmax->data) pmax=p; p=p->next; }

return pmax->data;

(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。的存储空间。

void inverse(LinkList &L) { // 逆置带头结点的单链表 L

p=L->next; L->next=NULL; while ( p) {

q=p->next; // q 指向*p 的后继 p->next=L->next;

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

第8章图

8.2对于如图8.33所示的无向图,试给出:

(1)图中每个顶点的度;

(2)该图的邻接矩阵;

(3)该图的邻接表;

(4)该图的连通分量。

(1)D(V0)=2;D(V1)=2;D(V2)=3;D(V3)=3;D(V4)=2;D(V5)=1;D(V6)=1.

0101000

0101000

1010000

1010000

0101100

0101100

1010100

(2)1010100

邻接矩阵

0011000

0011000

0000001

0000001

0000010

0000010

vV

(3)邻接表

(4)连通分量

1:

2:

8.3图8.35所示的是某个无向图的邻接表,试:(1)画出此图;

(2)写出从顶点A开始的DFS遍历结果;

(3)写出从顶点A开始的BFS遍历结果。

(1)图8.35邻接表对应的无向图如图8.35.1所示

(2)

从顶点A 开始的D F S 遍历,深度优先遍历的基本思想:定的图

G=(V,E ),首先将V 中每一个顶点都标记为未被访问,然后,选取一个源点vV 将v 标记为被访问,再递归地用深度优方法,依v 的所有邻接点 w .若w 未曾访问过w 为新的出发点继续深度优遍历,如果从v 出发 所有路的顶点都已被访问过,则结束。A ,B ,C ,F ,E ,G ,D 从顶点A 开始的B F S 遍历,基本思想:定的图G=(V,E ),从图中某未访 问过的顶点vi 出发: 1)访问顶点vi ; 2)访问vi 的所有未被访问的邻接点w1,w2,⋯wk ; 3)依次从这些邻接点出发,访问它们的所有未被访问的邻接点;依此类推,直 到图中所有访问过的顶点的邻接点都被访问; A ,B ,C ,D ,F ,E ,G 8.4对如图8.36所示的连通图,分别用P rim 和Kruskal 算法构造其最小生成 树。 解:(1)Prime 算法的基本思路、步骤P167 Prim 算法的基本步骤如下:(1)初始化:U={u0},TREE={};

(2)如果U=V (G ),则输出最小生成树T ,并结束算法;

(3)在所有两栖边中找一条权最小的边(u ,v )(若候选两栖边中的最小边不止 一条,可任选其中的一条),将边(u ,v )加入到边集TREE 中,并将顶点v 并入 集合U 中。

(4)由于新顶点的加入,U 的状态发生变化,需要对U 与V-U 之间的两栖边进 行调整。 (5)转步骤(2)

Prim算法构造最小生成树过程:

(2)采用Kruskal算法求解最小生成树时首先要对边进行由小到大进行排序,

本题对边进行排序的结果是:(D,F)1、(C,F)2、(A,F)3、(A,C)4、(F,G)4、(D,E)4、(D,B)4、(C,D)5、(E,G)5、(A,D)6、(D,G)6、(A,B)7。根据Kruskal算法,构造最小生成树的过程如图

8.5对于如图8.37所示的有向网,用Dijkstra方法求从顶点A到图中其他顶

点的最短路径,并写出执行算法过程中距离向量d与路径向量p的状态变化情况。

解:

Dijkstra算法的基本思想:

把图中所有顶点分成两组,第一组包括已确定最短路径的顶点,初始时只含有

一个源点,记为集合S;第二组包括尚未确定最短路径的顶点,记为V-S。按最

短路径长度递增的顺序逐个把V-S中的顶点加到S中去,直至从v0出发可以到

达的所有顶点都包括到S中。在这个过程中,总保持从v0到第一组(S)各顶点

的最短路径都不大于从v0到第二组(V-S)的任何顶点的最短路径长度,第二组

的顶点对应的距离值是从v0到此顶点的只包括第一组(S)的顶点为中间顶点的最短路径长度。对于S中任意一点j,v0到j的路径长度皆小于v0到(V-S)中

任意一点的路径长度。

(后面四行需要在集合S加上E)

从表中可以看出源点A到其它各顶点的最短距离及路径为:

A→B:48路径:A→B

A→C:57路径:A→D→F→C

A→D:15路径:A→D

A→E:28路径:A→E

A→F:48路径:A→D→F

A→G:38路径:A→D→G

8.6试写出如图8.38所示的AOV网的4个不同的拓扑序列。

(这里也有点问题,等待老师再次讲解)

解:拓扑排序过程:

1)输入AOV网络。令n为顶点个数。

2)在AOV网络中选一个没有直接前驱(入度为0)的顶点,并输出之;

3)从图中删去该顶点,同时删去所有它发出的有向边;

4)重复以上(2)、(3)步,直到

全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;图8.38

所示的AOV网的4个不同的拓扑序列为:

(1)ABDCEFGIH

(2)ABDECFGIH

(3)DABCEFGIH

(4)DAECBFGIH

8.7计算如图8.39所示的AOE网中各顶点所表示的事件的发生时间ve(j),vl(j),各边所表示的活动的开始时间e(i),l(i),并找出其关键路径。

解:

(1):e(i):表示活动ai的最早开始时间。

l(i):表示活动最迟开始时间的向量。

关键活动特征:e(i)=l(i)

l(j)-e(j)的值表示完成活动aj的时间余量,提前完成非关键活动并不能提高整个工程的进度。

事件可能的最早开始时间ve(i):对于某一事件vi,它可能的最早发生时间

事件允许的最晚发生时间vl(i):对于某一事件vi,它允许的最晚发生时间是在保证按时完成整个工程的前提下,该事件最晚必须发生的时间

可以得出:

相关文档
最新文档