数据结构期末自测题
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、将一棵有 100 个结点的完全二叉树从根这一层开始编号, 每一层从左往右依次对结 点进行编号,根结点编号为 1,则编号为 48 的结点的左孩子的编号为 A.96 B.97 C.98 D.99 4、树的层次遍历算法,采用什么数据结构可以方便实现 。 A.队列 B.堆栈 C.有向图 D.都可以 5、用正邻接表存储结构表表示图,其优点之一是 比较方便。 A.求一个顶点的出度 B.求一个顶点的入度 D.计算一个顶点的度数 C.A、B 都方便 6、关键路径是事件结点网络中 A.从源点到汇点的最长路径 C.最长的回路 。 B. 从源点到汇点的最短路径 D. 最短的回路 排序最好 D.快速 D、2n
3、设一个散列表表长 hashSize=13,.其下标从 0 到 12,采用线性探查法解决冲突 请按 、 采用线性探查法解决冲突. 其下标从 采用线性探查法解决冲突 以下要求,将下列关键码散列到表中 将下列关键码散列到表中. 以下要求 将下列关键码散列到表中 10 100 32 45 58 126 3 29 200 400 0 要求: 要求: 取余运算)将各关键码映像到表 1)散列函数采用除留余数法 用“关键码 )散列函数采用除留余数法,用 关键码%hashSize”(取余运算 将各关键码映像到表 ” 取余运算 中 . ( 6 分) 多少次冲突. 2)请指出每一个产生冲突的关键码可能产生多少次冲突 (4 分) )请指出每一个产生冲突的关键码可能产生多少次冲突
·顺序查找法:查找成功的平均查找长度为 顺序查找法:
n +1 ; 2
·折半查找法:查找成功的平均查找长度为 log2(n+1)+1; 折半查找法:
1 n ·分块查找法:若用顺序查找确定所在的块,平均查找长度为 ( + s ) + 1 ;若用折半 分块查找法:若用顺序查找确定所在的块, 2 s n s 确定所在块, 确定所在块,平均查找长度为 log2( +1)+ 。 s 2 2、有一组关键字(29,18,25,47,58,12,51,10) 、有一组关键字( , , , , , , , ) 1)要求非递减有序,采用快速排序方法,用第一个关键字作分划元素,请写出每一 非递减有序, )要求非递减有序 采用快速排序方法,用第一个关键字作分划元素, 趟排序结果( 趟排序结果(6 分) 2)这是否是堆,不是的话请将其调整成堆。 4 分) )这是否是堆,不是的话请将其调整成堆。 (
5、(√)图是一种非线性结构。 6、(√)算法的时间复杂度可以用来评估算法的时间性能。 7、(×)对二叉排序树进行先序遍历可以得到结点元素的有序序列。 8、(√)一个连通图的生成树不只一棵。 9、(×)可以对图进行拓扑排序来判定图是否是有向无环图。 10 (√)折半搜索只适用于有序表,包括有序顺序表和有序单链表( )
7、设要从 5000 个无序的元素中挑出最大的 10 个,使用 A.冒泡 B.希尔 C.堆 条边。 C、n(n-1)/2
8、一个有 n 个顶点的无向图最多有 A、n B、n(n-1)
9、顺序查找的评价查找长度为
A. ASL=n; C. ASL= n +1; B. ASL=(n+1)/2; D. ASL≈log2(n+1)-1
6. 哈希表的冲突是指 key1≠key2,f(key1)=f(key2) 。 7. 已知二叉树有 50 个叶子结点,则该二叉树总结点数至少有 99 个。
三、解答题 1、试述顺序查找法、二分查找法和分块查找法对被查找的表中元素的要求(5 分) 、试述顺序查找法、二分查找法和分块查找法对被查找的表中元素的要求( 。 的表来说, 三种查找法在查找成功时的平均查找长度各是多少? (5 对长度为 n 的表来说, 三种查找法在查找成功时的平均查找长度各是多少? 分) ( 三种方法对查找要求分别如下: 三种方法对查找要求分别如下: ·顺序查找法:表中元素可以任意存放; 顺序查找法:表中元素可以任意存放; ·折半查找法:表中元素必须以关健字的大小递增或递减的次序存放; 折半查找法:表中元素必须以关健字的大小递增或递减的次序存放; 分块查找法:表中元素每块内的元素可以任意存放, ·分块查找法:表中元素每块内的元素可以任意存放,但块与块之间必须以关健字的 大小递增(或递减)存放,即前一块内所有元素的关健字都不能大于(或小于) 大小递增(或递减)存放,即前一块内所有元素的关健字都不能大于(或小于) 后一块内任何元素的关健字。 后一块内任何元素的关健字。 三种方法的平均查找长度分别如下: 三种方法的平均查找长度分别如下:
; ;
Leabharlann Baidu
自测题 1
判断题( 一、 判断题(10 分,每题 1 分)
1、(×)二叉树是非线性数据结构,所以它不能用顺序存储结构存储。 2、(×)栈和队列均是操作(运算)受限的线性表。 3、 (√)索引顺序表的特点是块内可无序,块间要有序。 4、(×)二叉排序树或是一棵空树,或是具有下列性质的二叉树:
若它的左子树非空,则根结点的值大于其左孩子的值 若它的右子树非空,则根结点的值大于其右孩子的值
单项选择题: (10 二、 单项选择题: ( 分,每题 1 分)
1、规定元素类型必须是字符的数据结构是 A.串 B.图 C.栈和队列 2、具有 n(n>0)个结点的完全二叉树的深度为 。 A. log2(n) B. log2(n) C. log2(n) +1 D.都不是
D. log2(n)+1
10、从未排序序列中挑选元素,并将其依次插入已排序序列的一端的方法,称 。 为 A. 希尔排序 B. 归并排序 C. 插入排序 D. 选择排序
二、填空题(10 分,每空 1 分) 填空题( 。
1.大多数排序算法都有两个基本的操作:比较两个关键字的大小和改变指向记录的指针或 移动记录本身。 2. 在插入和选择排序中,若初始数据基本正序,则选用插入排序;若初始数据基本反 序,则选用选择排序。 3. 已知二维数组 A[8][10]采用行序为主方式存储,每个元素占 2 个存储单元,并且 A[0][0]的存储地址是 1000,则 A[7][9]的存储地址是 1158 。 在二维数组 a[m][n]中,Loc(a[i][j])=Loc(a[0][0])+(i×n+j)×L 4. 在各种查找方法中,平均查找长度与结点个数无关的是哈希表查找法。 5. 设有一稠密图 G,则 G 采用 邻接矩阵 则 G 采用 邻接表 存储较省空间。 存储较省空间。对于稀疏图 G,
1 6 2 5 3 3 6 5 6 4 6 2 1 5 5 4
6、请根据下列字母序列中字母出现的频率: 、请根据下列字母序列中字母出现的频率:
ACCEEAABBDAAABBCAACBAADDEEDDAAABBBCCAABBEEAAABBBAA (1)请统计各字母出现的频率(2 分) 请统计各字母出现的频率( 请统计各字母出现的频率 (2)请根据字母频率构造哈夫曼树(4 分) 请根据字母频率构造哈夫曼树( 请根据字母频率构造哈夫曼树 请给出各字母的哈夫曼编码( (3)请给出各字母的哈夫曼编码(2 分) 请给出各字母的哈夫曼编码 (4)请给出序列前 10 个字母的编码序列(2 分) 个字母的编码序列( 请给出序列前 七、程序设计(10 分) 程序设计( 1、 二叉树用二叉链表存储,以下函数对树进行先序遍历,用递归算法,将函数体部 、 二叉树用二叉链表存储,以下函数对树进行先序遍历,用递归算法, 分补充完整。 (5 分补充完整。 分) ( typedef struct node { datatype data; struct node *lchild, *rchild; }* BiTree; Void preorder(BiTree T) {
4、对于表达式 a + (b - c)*(d + e) - f/(g + h). 、 (1)画出相应的二叉树表示。 分) 画出相应的二叉树表示。 (6 画出相应的二叉树表示 ( 给出它的前缀表达式。 (2)给出它的前缀表达式。 2 分) 给出它的前缀表达式 ( (3)给出它的后缀表达式。 2 分) 给出它的后缀表达式。 给出它的后缀表达式 ( 5、对下图的无向带权图: 10 分) 、对下图的无向带权图: ( 1)给出它的邻接矩阵(4 分) )给出它的邻接矩阵( 2)叙述如何据矩阵求一个顶点的度(3 分) )叙述如何据矩阵求一个顶点的度( 3)求其最小生成树(直接画出最小生成树即可)(3 分) )求其最小生成树(直接画出最小生成树即可) 。
} 2、给定如下静态查找表的顺序存储结构,编写折半查找算法,在有序表 ST 中查找 、给定如下静态查找表的顺序存储结构,编写折半查找算法, 的元素,若找到,则返回该元素在表中的位置, 关键字等于 key 的元素,若找到,则返回该元素在表中的位置,否则返回 0。 5 。 ( 分) Typedef struct { Elemtype *elem; Int length; } SSTable; int Search_Bin(SSTable ST,KeyType key) //折半查找 折半查找 { int low,high,mid; low = 1; high=ST.length; //初始化 初始化 while (low < high) { mid = ; if ( key = = ST.elem[mid].key ) return else if ( key < ST.elem[mid].key ) high= else low=mid+1; } return 0; }