数据结构各章作业题目 下载本文

第一章作业 一、选择题

1. 被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的

这种关系称为( )。 A. 规则 B. 结构 C. 集合 D. 运算 2. 在Data_Structure=(D,S)中,D是( )的有限集合。

A. 数据元素 B. 算法 C. 数据操作 D.数据对象 3. 计算机所处理的数据一般具有某种关系,这是指( )之间存在的某种关系。

A. 数据与数据 B. 数据元素与数据元素 C. 元素内数据项与数据项 D. 数据文件内记录与记录 4. 顺序存储表示中数据元素之间的逻辑关系是由( )表示的。

A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 5. 链接存储表示中数据元素之间的逻辑关系是由( )表示的。

A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 6. 从逻辑上可将数据结构分为( )。

A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 内部结构和外部结构 D. 线性结构和非线性结构 7. 以下选项属于线性结构的是( )。

A. 广义表 B. 二叉树 C. 串 D. 稀疏数组 8. 以下选项属于非线性结构的是( )。

A. 广义表 B. 队列 C. 优先队列 D. 栈 9. 以下属于逻辑结构的是( )

A. 顺序表 B. 散列表 C. 有序表 D. 单链表 10. 一个完整的算法应该具有( )等特性。

A. 可执行性、可修改性和可维护性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和可靠性 D. 正确性、可读性和有效性

11. 若一个问题既可以用迭代方法也可以用递归方法求解,则( )的方法具有更高的时空效率。

A. 迭代 B. 递归 C. 先递归后迭代 D. 先迭代后递归 12. 一个递归算法必须包括( )

A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部分

13. 算法的时间复杂度与( )有关。

A. 问题规模 B. 源程序长度 C. 计算机硬件运行速度 D. 编译后执行程序的质量

二、指出下列各算法的功能并求出其时间复杂度。 (1)

int Prime(int n){

int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根 while(i<=x){

if(n%i==0)break; i++; }

if(i>x) return 1;

1

elsereturn 0; } (2)

int sum1(int n){ int p=1,s=0;

for(int i=1;i<=n;i++){ p*=i;s+=p; }

return s; } (3)

int sum2(int n){ int s=0;

for(int i=1;i<=n;i++){ int p=1;

for(int j=1;i<=i;j++) p*=j; s+=p; }

return s; } (4)

int fun(int n){ int i=1,s=1;

while(s

void mtable(int n){

for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++)

cout<

2

第二章作业

一、选择题

1. 在线性表中的每一个表元素都是不可再分的( )

A. 数据项 B. 数据记录 C. 数据元素 D. 数据字段 2. 顺序表是线性表的( )存储表示。

A. 有序 B. 连续 C. 数组 D. 顺序存取

3. 若长度为n的非空线性表采用顺序存储结构,在表中的第i个位置插入一个数据元素,i的合法值

应该是( ) A. 1?i?n B. 1?i?n?1 C. 0?i?n?1 D. 0?i?n

4. 若设一个顺序表的长度为n,那么,在表中顺序查找一个值为x的元素时,在等概率的情况下,

查找成功的数据平均比较次数为( ) A. n B. n/2 C. (n?1)/2 D. (n?1)/2 5. 在长度为n的顺序表的表尾插入一个新的元素的时间复杂度为( )

A. O(n)

B. O(1)

C. O(n)

2D. O(log2n)

6. 数据结构反映了数据元素之间的结构关系。单链表是一种( )。 A. 顺序存储线性表 B. 非顺序存储非线性表 C. 顺序存储非线性表 D. 非顺序存储线性表 7. 单链表又称为线性链表,在单链表上实施插入和删除操作( )

A. 不需移动结点,不需改变结点指针 B. 不需移动结点,只需改变结点指针 C. 只需移动结点,不需改变结点指针 D. 既需移动结点,又需改变结点指针 8. 已知L是带头结点的单链表,则删除首元素结点的语句是( )

A. L=L->next; B. L->next=L->next->next; C. L=L->next->next; D. L->next=L; 9. 已知单链表A长度为m,单链表B长度为n,若将B链接在A的末尾,在没有链尾指针的情况下,算法的时间复杂度应为( )。

A. O(1)

B. O(m)

C. O(n)

D. O(m?n)

10. 给定有n个元素的一维数组,建立一个有序单链表的时间复杂度是( )

A. O(1)

B. O(n)

C. O(n)

2D. O(nlog2n)

二、算法设计

1. 设计一个算法,从顺序表L中(SqList L)删除具有给定值x(ElemType x)的所有元素。

2. 设计一个算法,从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。 3. 设计一个算法,在非递减有序的带头结点的单链表中删除值相同的多余结点。

3

第三章作业

一、选择题

1. 用S表示进栈操作,用X表示出栈操作,若元素的进栈顺序是1234,为了得到1342的出栈顺序,

相应的S和X的操作序列为( ) A. SXSXSSXX B. SSSXXSXX C. SXSSXXSX D. SXSSXSXX 2. 假设一个栈的输入序列是1,2,3,4,则不可能得到的输出序列是( )

A. 1,2,3,4 B. 4,1,2,3 C. 4,3,2,1 D. 1,3,4,2 3. 已知一个栈的进栈序列为1,2,3,…,n,其输出序列的第一个元素是i,则第j个出栈元素是( )。

A. j?i

B. n?i

C.j?i?1

D. 不确定

4. 已知一个栈的进栈序列为1,2,3,?,n,其输出序列是p1,p2,p3,?,pn。若p1?n,则pi的值是( )

A. i

B. n?i

C.n?i?1

D. 不确定

5. 已知一个栈的进栈序列为1,2,3,?,n,其输出序列是p1,p2,p3,?,pn。若p1?3,则p2的值是( )

A.一定是2

B. 一定是1

C.可能是1

D. 可能是2

6. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若p3?1,则p1的值是( )

A.一定是2

B. 可能是2

C.不可能是2

D. 一定是3

7. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若p3?3,则p1的值是( )

A.一定是2

B. 可能是2

C.不可能是1

D. 一定是1

8. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若pn?1,则p1的值是( ) A. n?i?1 B. n?i C.i D. 不确定

9. 设栈S和队列Q的初始状态均为空,元素1,2,3,4,5,6,7,依次进入S。如果每个元素出栈后立即进

入队列Q,且7个元素的出队顺序为2,4,3,6,5,1,7,则栈S的容量至少是( ) A. 1 B. 2 C. 3 D. 4

10. 对中缀表达式3?2*(4?2*2?6*3)?5求值,在求值过程中扫描到6时,操作数栈和操作符栈的内容分别是( )

A. 3,2,4,2,2和+,*,(,+,* B. 3,2,4,4和+,*,(,+ C. 3,2,8和+,*,( 二、算法设计题

1. 详见《数据结构题集(C语言版)》第25页3.24。 2. 详见《数据结构题集(C语言版)》第25页3.25。

D. 3,2,8,6和+,*,(,-

4

第四章作业

11. 串是一种特殊的线性表,其特殊性体现在( )

A. 可以顺序存储 B. 数据元素是一个字符 C. 可以链式存储 D. 数据元素可以是多个字符

12. 设有两个串T和P,求P在T中首次出现的位置的运算叫做( )。

A. 求子串 B. 模式匹配 C. 串替换 D. 串连接 13. 下面关于串的叙述中,哪一个是不正确的?( )

A.串是字符的有限序列 B.空串是由空格构成的串

C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 14. 串的长度是指( )

A.串中所含不同字母的个数 B.串中所含字符的个数

C.串中所含不同字符的个数 D.串中所含非空格字符的个数 15. 两个串相等的充分必要条件是()

A.串中所含的字符相同 B.串中所含字符的个数相同,且对应位置上的字符也相同 C.串中所含的字符个数相同 D.串中对应位置上的字符相同 6. 已知p=”abcaabbabcabaacbacb”,求出next函数值。

5

第五章作业

一、选择题

16. 数组通常具有的操作是( )

A. 顺序存取 B. 直接存取 C. 散列存取 D. 索引存取 17. 多维数组实际上是由( )实现的。

A. 一维数组 B. 多项式 C. 三元组表 D. 简单变量

18. 在二维数组A[8][10]中,每一个数组元素A[i][j]占用3个存储空间,所有数组元素相继存放于一个

连续的存储空间中,则存放该数组至少需要的存储空间是( )。 A. 80 B. 100 C. 240 D. 270

19. 一个二维数组A[10][20]按行存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组

元素占1个存储字,则A[6][2]的地址为( ) A. 226 B. 322 C. 341 D. 342 20. 一个二维数组A[10][20]按列存放于一个连续的存储空间中,A[0][0]的存储地址是200,每个数组元素占1个存储字,则A[6][2]的地址为( ) A. 226 B. 322 C. 341 D. 342 21. 在二维数组A[9][10]中,每个数组元素占用3个存储单元,从首地址SA开始按行连续存放,在这种情况下,元素A[8][5]的起始地址为( ) A. SA+141 B. SA+144 C. SA+222 D. SA+255

22. 将一个n?n的对称矩阵A的下三角部分按存放在一个一维数组B中,A[0][0]存放在B[0]中,那么

第i行的对角元素A[i][i]在B中的存放位置是( ) A. (i?3)i/2 B. (i?1)i/2 C. (2n?i?1)i/2 D. (2n?i?1)i/2 23. 将一个n?n的对称矩阵A的上三角部分按存放在一个一维数组B中,A[0][0]存放在B[0]中,那么第i行的对角元素A[i][i]在B中的存放位置是( ) A. (i?3)i/2 B. (i?1)i/2 C. (2n?i?1)i/2 D. (2n?i?1)i/2 24. 设A是一个n?n的对称矩阵,将A的对角线及对角线上方的元素以列优先(以列为主序)的方式存

放在一维数组B[n(n?1)/2]中,则矩阵中任一元素aij(0?i,j?n,i?j)在B中的存放位置是( ) A. j(j?1)/2?i

B. j(j?1)/2?i?1

C. i(i?1)/2?j

D. i(i?1)/2?j?1

25. 设n阶三对角矩阵A的三条对角线上的元素被按行压缩存储到一维数组B中,A[0][0]存放于B[0]。若某矩阵元素在B中存放的位置在k,那么该元素在原始矩阵中的行号i是( ) A. ?(k?1)/3? B. ?k/3? C. ?(k?1)/3? D. ?(k?1)/3? 二、简答题

26. 设有一个3维数组A[10][20][15],按行优先存放于一个连续的存储空间中,每个数组元素占4个

存储字,首元素A[0][0][0]的存储地址是1000,则A[7][8][9]存放于什么地方。

27. 设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放在676(10),每个元

素占1个存储单元,问A[3][3](10)存放在什么位置?脚注(10)表示用十进制表示。

28. 对于一个n?n矩阵A的任一元素a[i][j],按行存储和按列存储时的地址之差是多少?(假设两种存

储的开始存储地址LOC(0,0)以及元素所占存储单元数d相同)

29. 设有n阶三对角矩阵A,将其3条对角线上的元素逐行存储到数组B[0:3n?3]中,使得

B[k]?A[i][j],且B[0]?A[0][0],求

(1) 用i,j表示k的下标变换公式。 (2) 用k表示i,j的下表变换公式。

6

30. 设有一个n?n的对称矩阵A,将其下三角部分按行压缩存放于一个一维数组B中,A[0][0]存放

于B[0],试问:(1) 一维数组B有多少个元素?(2) A中的任意一个元素A[i][j]应存于一维数组B的什么下标位置?

31. 设有一个n?n的对称矩阵A,将其上三角部分按列压缩存放于一个一维数组B中,A[0][0]存放

于B[0],试问:(1) 一维数组B有多少个元素?(2) A中的任意一个元素A[i][j]应存于一维数组B的什么下标位置?

7

第六章作业 一、选择题

32. 一颗有n个结点的树的所有结点的度数之和为( )。

A.n-1 B. n C. n?1

33. 设一颗高度为h的满二叉树有n个结点,其中有m个叶结点,则( ) A.n?h?m B. h?m?2n C. m?h?1 34. 一颗有124个叶结点的完全二叉树最多有( )个结点。

A. 247 B. 248 C. 249 35. 一颗有129个叶结点的完全二叉树最少有( )个结点。

A. 254 B. 255 C. 257

36. 设完全二叉树的第6层有24个叶结点,则此树最多有( )个结点。

A. 55 B. 79 C. 81

37. 具有1000个结点的完全二叉树的次底层的叶结点个数为( )。

A. 11 B. 12 C. 24

D. 2n D. n?2h?1 D. 250 D. 258 D. 127 D. 36

38. 用顺序存储的方法将n个结点的完全二叉树中所有结点按层逐个顺序存放在一维数组R[n]中,当

编号为0的根结点存放于R[0]时,若结点R[i]有左孩子,则左孩子是( )。 A.R[2i?1]

B. R[2i]

C. R[2i?1]

D. R[2i?2]

39. 用顺序存储的方法将n个结点的完全二叉树中所有结点按层逐个顺序存放在一维数组R[n]中,当

编号为0的根结点存放于R[0]时,若结点R[i]有右孩子,则右孩子是( )。

A.R[2i?1] B. R[2i] C. R[2i?1] D. R[2i?2] 40. 二叉树的叶结点在前序、中序和后序遍历过程中的相对顺序( )。

A. 发生改变 B. 不发生变化 C. 无法确定 D. 以上均不对

41. 设n,m为一颗二叉树上的两个结点,在该二叉树的中序遍历序列中n在m前的条件是( )。

A. n在m右方 B. n是m的祖先 C. n在m左方 D. n是m的子孙 42. 设一颗二叉树的前序序列为abdec,中序序列为dbeac,则该二叉树的后序遍历顺序是( )。

A. abdec B. debac C. debca D. abedc

43. 设一颗二叉树的中序序列为badce,后序序列为bdeca,则该二叉树的前序遍历顺序是( )。

A. adbec B. decab C. debac D. abcde

44. 对二叉树的结点从1开始连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的

左、右孩子中,其左孩子编号小于其右孩子编号,则可采用( )遍历实现二叉树的结点编号。 A. 先序 B. 中序 C. 后序 D. 层次序

45. 如果T2是由有序树T转换成的二叉树,那么T中结点的先根遍历顺序对应T2中结点的( )遍历

顺序。 A. 前序 B. 中序 C. 后序 D. 层次序

46. 如果T2是由有序树T转换成的二叉树,那么T中结点的后根遍历顺序对应T2中结点的( )遍历

顺序。 A. 前序 B. 中序 C. 后序 D. 层次序 47. 用n个权值构造出来的Huffman树共有( )个结点。

A. 2n?1 B. 2n C. 2n?1 D. n?1 48. 由权值为8,4,5,7的4个叶结点构造一颗Huffman树,该树的带权路径长度为( )。 A. 24 B. 36 C. 48 D. 72 二、简答题

49. 设二叉树根结点所在层次为1,树的深度d为距离根最远的叶结点所在的层次,试回答以下问题:

(1) 试精确给出深度为d的完全二叉树的不同二叉树的棵数;(2) 试精确给出深度为d的满二叉树

8

的不同二叉树棵数。

50. 如果一棵树有n1个度为1的结点,有n2个度为2的结点,……,有nm个度为m的结点,试问有

多少个度为0的结点?

51. 已知一棵二叉树的前序遍历序列为ABECDFGHIJ,中序遍历序列为EBCDAFHIGJ。(1)画出这棵二叉树;(2)给出这棵二叉树后序遍历序列;(3)画出这棵二叉树转换成对应的树(或森林)。

52. 假定用于通信的电文仅有8个字母A,B,C,D,E,F,G,H组成,各字母在电文中出现的频率分别为

5,25,3,6,10,11,36,4。试为这8 个字母设计不等长Huffman编码,并给出该电文的总码数。 三、算法设计

53. 设二叉树的存储结构为二叉链表,编写一个递归算法,统计二叉树中度为1的结点个数。 54. 设二叉树的存储结构为二叉链表,编写一个递归算法,统计二叉树中度为2的结点个数。 55. 设树T以孩子-兄弟链表作为其存储表示,编写一个算法统计树T的叶结点个数。 56. 设树T以孩子-兄弟链表作为其存储表示,编写一个算法计算树T的高度。

9

第七章作业 一、选择题

1. 具有n个顶点且每一对不同顶点间都有一条边的无向图被称为( )。

A. 完全无向图 B. 无向连通图 C. 无向强连通图 2. 一个有n个顶点的无向图中边数最多有( )条。

A. n B. n(n?1) C. n(n?1)/2 3. 对于具有n(n?1)个顶点的强连通图,其有向边条数至少是( ) 4. 5. 6. 7. 8.

D. 无向树图 D. 2n

A. n?1 B. n C. n?1 D. n?2 设G是一个非连通无向图,有15条边,则该图的顶点数至少有( )个。 A. 5 B. 6 C. 7 D. 8

在一个具有n个顶点的有向图中,若所有顶点的岀度之和为s,则所有顶点的入度之和为( )。 A. s B.s-1 C. s+1 D. n 一个有n个顶点和n条边的无向图一定是( )。 A. 重连通图 B. 不连通图 C. 无环的 D. 有环的 无向图的邻接矩阵是一个( )。 A. 对称矩阵 B. 零矩阵 C. 上三角矩阵 D. 对角矩阵 有n个顶点和e条边的无向图采用邻接矩阵存储,零元素的个数为( )。

22A. e B. 2e C. n?e D. n?2e 9. 带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中( )。

A. 第i行非∞的元素之和 B. 第i列非∞的元素之和 C. 第i行非∞且非0的元素个数 D. 第i列非∞且非0的元素个数 10. 设图有n个顶点和e条边,采用邻接矩阵时,遍历图的顶点所需时间为( )。 A. O(n) B. O(n) C. O(e) D. O(ne) 11. 设图有n个顶点和e条边,采用邻接表时,遍历图的顶点所需时间为( )。

A. O(n?e) B. O(n) C. O(e) D. O(ne) 12. 图的深度优先搜索类似于树的( )次序遍历。

A. 先根 B. 中根 C. 后根 D. 层 13. 图的广度优先搜索类似于树的( )次序遍历。

A. 先根 B. 中根 C. 后根 D. 层 14. 采用邻接表存储的图的深度优先搜索算法类似于二叉树的( )。

A. 中序遍历 B. 前序遍历 C. 后序遍历 D. 层次遍历 15. 采用邻接表存储的图的广度优先搜索算法类似于二叉树的( )。

A. 中序遍历 B. 前序遍历 C. 后序遍历 D. 层次遍历

16. 如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是( )。

A. 强连通图 B. 连通图 C. 有回路 D. 一棵树

17. 如果一个连通网络G中各边权值互不相同,权重最小的边一定包含在G的( )生成树中。

A. 最小 B. 任何 C. 广度优先 D. 深度优先 18. 任何一个连通图的最小生成树( )。

A. 只有一棵 B. 有一棵或多棵 C. 一定有多棵 D. 可能不存在 19. 一个有n个顶点和e条边的连通图的生成树有( )条边。

A. n B. e C. n?1 D. n?1

20. 设一个n个顶点的带权连通图有nlog2n条边,则应该选通( )算法来求这个图的最小生成树,

从而使计算时间较少。 A. Prim B. Kruskal C. DFS D. BFS

2210

21. 求最短路径的Dijkstra算法的时间复杂度为( )。 A. O(n) B. O(n?e) C. O(n2) 22. 求最短路径的Floyd算法的时间复杂度为( )。

D. O(ne)

A. O(n) B. O(ne) C. O(n2) D. O(n3) 23. 设有向图具有n个顶点和e条边,如果用邻接表作为它的存储结构,则拓扑排序的时间复杂度为( )。 A. O(n) B. O(n?e) C. O(n2) D. O(ne)

24. 设有向图具有n个顶点和e条边,如果用邻接矩阵作为它的存储结构,则拓扑排序的时间复杂度

为( )。 A. O(nlog2e) B. O(n?e) C. O(n2) 二、应用题

25. 针对图1所示的有向图,画出该图的邻接矩阵、邻接表和逆邻接表。

ADD. O(ne)

BEabdcegf 图1 图2

26. 对图2所示的无向图,从顶点a开始进行深度优先遍历,给出2个可得到的顶点访问序列;从顶

点a开始进行广度优先遍历,给出2个可得到的顶点访问序列。

27. 已知一个带权连通图如图3所示,分别使用Prim算法和Kruskal算法求其最小生成树。

B1220CFa3b12cA586D1510C98FE1510651

4

d8e9f

图3 图4

28. 已知一个带权有向图如图4所示,用Dijkstra算法求从顶点a到其余各顶点的最短路径及路径长

度。

29. 如图所示的AOE网,求

(1) 完成此工程最少要多少天(设弧上的权值为天数); (2) 每项活动ai的最早开始时间e(ai)和最迟开始时间l(ai); (3) 哪些是关键活动;

(4) 是否存在某些活动,当其提高速度后能使整个工程缩短工期?

11

BF5A3D4G4J36C631E52I24H

图5

12

第九章作业 一、选择题

30. 顺序查找算法适用于( )。

A. 线性表 B. 查找树 C. 查找网 31. 顺序查找法适用于线性表的( )。

A.散列存储 B.压缩存储 C. 索引存储

32. 采用顺序查找方式查找长度为n的顺序表时,平均查找长度为( )

D. 连通图 D. 顺序或链接存储

A. n B. n/2 C. (n?1)/2 D. (n?1)/2

33. 如果有5个关键吗{a,b,c,d,e}放在顺序表中,他们的查找概率分别为{0.35,0.25,0.20,.015,0.05},可

使平均查找长度达到最小的存放方式是( )。 A. d,a,b,c,e B. e,d,c,b,a C. a,b,c,d,e D. a,c,e,d,b

34. 对于长度为n的有序单链表,若查找每个元素的概率相等,则顺序查找表中任一元素的查找成功

的平均查找长度为( ) A. n/4 B. n/2 C. (n?1)/2 D. (n?1)/2 35. 对线性表进行折半查找时,要求线性表必须( )

A. 以顺序方式存储 B. 以链接方式存储 C. 以顺序方式存储,且结点按关键吗有序排列 D. 以链接方式存储,且结点按关键吗有序排列 36. 采用折半查找法查找长度为n的有序顺序表时,平均查找长度为( )

A. O(n) B. O(log2n) C. O(n) D. O(nlogn) 37. 对于长度为18的有序顺序表,若采用折半查找,则查找第15个元素的查找次数为( )。

A. 3 B.4 C. 5 D. 6 38. 已知有序顺序表(13,18,24,35,47,50,62,83,90,115,134),若采用折半查找法查找值为18的元素时,查

找成功的数据比较次数为( )。 A. 1 B.2 C. 3 D. 4 39. 使用散列法时确定元素存储地址的依据是( )。

A. 元素的序号 B. 元素个数 C. 关键吗 D. 非码属性 40. 设一个散列表中有n个元素,用散列法进行查找的平均查找长度是( )。

A. O(1) B. O(n) C. O(log2n) D. O(n) 41. 使用散列函数将元素的关键吗映射为散列地址时,常会发生冲突。此时的冲突是指( )。

A. 两个元素具有相同的序号 B. 两个元素的关键码不同,而非关键码相同 C. 不同关键码对应到相同的存储地址 D. 装载因子过大,数据元素过多 42. 计算出的地址分布最均匀的散列函数是( )。

A. 数值分析法 B. 除留余数法 C. 平方取中法 D. 折叠法 43. 将10个元素散列到大小为100000个元素的散列表中,( )产生冲突。

A. 一定会 B. 一定不会 C. 仍可能会 D. 以上都不对 44. 采用线性探测法解决冲突时计算出的一系列“下一个空位”( )。

A. 必须大于等于原散列地址 B. 必须小于等于原散列地址 C. 可以大于或小于但不等于原散列地址 D. 对地址在何处没有限制 45. 包含有4个结点的元素值互不相同的二叉查找树有( )棵。

A. 4 B. 6 C. 10 D. 14

46. 利用逐个数据插入的方法建立序列{35,45,25,55,50,10,15,30,40,20}对应的二叉查找树后,查找元素

20需要进行( )次元素之间的比较。 A. 4 B. 5 C. 7 D. 10

47. 一颗高度为h的AVL树,若其每个非叶子结点的平衡因子都是0,则该树共有( )个结点。

2213

A. 2?1 B. 2

48. 高度为7的AVL树最少有( )个结点。

A. 12 B. 21 49. 高度为7的AVL树最多有( )个结点。 A. 63 B. 64 二、应用题

h?1h?1C. 2h?1?1 D. 2?1 D. 54 D. 127

hC. 33 C. 65

50. 设有一个关键码的输入序列{55,31,11,37,46,73,63},从空树开始构造AVL树,画出每加入一个新结

点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。

51. 分别画出在图1所示的AVL树中插入15、36后树的变化。如果有平衡化旋转,注明相关结点平

衡因子的变化(注意,15和36是各自独立插入到图1所示的AVL树中)。

1396112202427413843471821263140 图1

52. 已知含12个关键字的有序表及其相应的权值如下表,试按次优查找树的构造算法,画出由这12

个关键字构造所得的次优查找树,并计算它的PH值。

关键字 权值 A 8 B 2 C 3 D 4 E 9 F 3 G 2 H 6 I 7 J 1 K 1 L 4 53. 对于23题有序表及其相应的权值,试按次优查找树的构造算法并加适当调整,画出由这12个关

键字构造所得的次优查找树,并计算它的PH值。通过适当调整后得到的次优查找树是否更优? 54. 设哈希表HT[15],哈希函数为H(key)?key。用开放地址法解决冲突,对下列关键码序列12,23,45,57,20,03,78,31,15,36造表。采用线性探测法寻找下一个空位,画出相应的哈希表,并计算等概率下查找成功的平均查找长度和查找不成功的平均查找长度。

55. 设哈希表HT[15],哈希函数为H(key)?key。用开放地址法解决冲突,对下列关键码序列

12,23,45,57,20,03,78,31,15,36造表。采用再哈希法寻找下一个空位,再哈希函数为RH(key)?(7key)?1,寻找下一个空位置的公式为Hi?(Hi?1?RH(key)),H0?H(key)。画

出相应的哈希表,并计算等概率下查找成功的平均查找长度。

14

第十章作业 一、选择题

56. 排序算法的稳定性是指( )。

A. 经过排序后,能使值相同的数据保持原顺序中的相对位置不变 B. 经过排序后,能使值相同的数据保持原顺序中的绝对位置不变 C. 经过排序后,数据序列的存放数组的结构保持不变 D. 经过排序后,数据序列的存放数组的结构随之变化

57. 若要求在最坏情况下也能尽快地对序列进行稳定的排序,则应选( )。

A.起泡排序 B.快速排序 C. 归并排序 D. 堆排序

58. 每次从未排序的序列中取出一个元素与已排序的序列中的元素依次进行比较,然后把它插入到已

排序序列中的适当位置,此种排序方法叫做( ) A. 起泡排序 B. 直接插入排序 C. 简单选择排序 59. 对5个不同数据元素做直接插入排序,其数据比较次数最多是( )。

A. 8 B. 10 C. 15 60. 直接插入排序在最好情况下的时间复杂度是( )

D. 二路归并排序 D. 25

2A. O(log2n) B. O(n) C. O(nlog2n) D. O(n) 61. 每次直接比较两个元素,若出现逆序排列时就交换它们的位置,此种排序方法是( )

A. 堆排序 B. 选择排序 C. 起泡排序 D. 基数排序

62. 一个元素序列的排序码为{46,79,56,38,40,84},采用快速排序(以第一个元素为枢轴)得到的第一次

划分结果为( ) A. {38,46,79,56,40,84} B. {38,79,56,46,40,84} C. {40,38,46,79,56,84} D. {38,46,56,79,40,84} 63. 每次从待排序序列中挑选从一个最小或最大元素,吧它们交换到该序列的最前端,此种排序方法

是( )。 A. 起泡排序 B.直接插入排序 C. 简单选择排序 D. 二路归并排序 64. 堆是一种有用的数据结构。在以下排序码序列中小顶堆是( )。

A. {16,72,31,23,94,53} B.{94,53,31,72,16,53} C. {16,53,23,94,31,72} D. {16,31,23,94,53,72} 65. 向具有n个元素的堆中插入一个新元素的时间复杂度为( )。 A. O(1) B. O(n) C. O(log2n) 66. 从具有n个元素的堆中删除一个元素的时间复杂度为( )。

D. O(nlog2n)

A. O(1) B. O(n) C. O(log2n) D. O(nlog2n) 67. 在用二叉树实现的应用中,从任意结点出发到根的路径上所经过的结点序列是按其排序码有序的,

这样的树是( )。 A. 完全二叉树 B. AVL树 C. 堆 D. 二叉排序树 68. 下列排序算法中最坏情况下的时间代价不高于O(nlog2n)的是( )。

A. 插入排序 B. 归并排序 C. 快速排序 D. 希尔排序 69. 下列算法中不稳定的算法是( )。

A. 起泡排序 B. 直接插入排序 C. 基数排序 D. 快速排序 70. 以下不属于内排序方法的是( )。

A. 起泡排序 B. 拓扑排序 C. 基数排序 D. 快速排序 二、应用题

71. 设待排序的排序码序列为{12,2,16,30,28,10,16*,20,6,18},试写出使用希尔排序(增量为5,2,1)方法每

趟排序后的结果,并说明做了多少次排序码比较。

72. 设待排序的排序码序列为{38,07,72,12,43,65,62,88,31,27,15,54},试给出使用快速排序算法(以第一

15

个元素为枢轴)每一趟排序结束时的排序码状态。

73. 设待排序的排序码序列为{12,2,16,30,10,16*,15,6},试写出使用堆排序进行从小到大排序,每趟排

序后的结果。

74. 如果只想得到一个序列中第K个最小元素之前的部分排序序列,那么最好应采用哪种排序算法?

为什么?如由这样一个序列:57, 40, 38, 11, 13, 34, 48, 75, 25, 6, 19, 9, 7 得到其第3个最小元素之前的部分排序序列:6,7,9, 用你选用算法实现时,共执行多少次比较?

16