数据结构与C语言程序设计答案
一. 是非题(2’´10)
(´)1、 队列逻辑上是一个表头和表尾既能插入又能删除的线性表。
(√)2、任何一个递归过程都可以转换成非递归过程。
(´)3、 与n个键值的集合{k1,k2,…,kn}相对应的堆是唯一的。
(´)4、 在索引顺序表上实现分块查找,在等概率查找情况下,其查找长度只与表中元素个数有关,而与每块中元素个数无关。
(´)5、 所谓加权无向图G的最小生成树T就是将G中各结点间的最短路径作为边所构造出来的G的子图。
(´)6、 在10万个随机排列的数据中,要选出5个最小的数,采用快速排序比采用Shell排序、堆排序及各种直接排序法都快。
(´)7、 B树查找算法的时间复杂性为O(n)。
(´)8、 哈希表查找无需进行关键字的比较。
(´)9、 在执行某个排序过程中,出现排序码朝着最终位置相反方向移动,则该算法是不稳定的。
(´)10、任何有向图的顶点都可以按拓扑序排序。
二. 填空题(2’´6)
1. 假设用于通信的电文由8个字母组成,其频率分别为0.07,0.19,0.02,0.06, 0.32,0.03,0.21,0.10, 为这8个字母设计哈夫曼编码,其中编码长度最大的字母的编码是 5 位。
2.已知二*树按中序遍历所得到的结点序列为DCBGEAHFIJK,按后序遍历所得到的结点序列为DCEGBFHKJIA, 按先序遍历所得到的结点序列为 ABCDGEIHFJK 。
3. 设哈希表长度为11, 哈希函数 H(k)=k MOD 11, 若输入顺序为(18,10,21,9,6,3,16,25,7),处理冲突方法为线性探测再散列,请构造哈希表 。
0 1 2 3 4 5 6 7 8 9 10
21 3 25 16 6 18 7 9 10
4.给出一组关键字 T=(20,4,34,5,16,33,18,29,2,40,7),要求从小到大进行排序,试给出快速排序(选第一个记录为枢轴)第一趟排序结果 7,4,2,5,16,18,20,29,33,40,34 。
5.已知模式匹配的KMP算法中模式串t=’adabbadada’,其next函数的值为 0112112343 。
6.在置换-选择排序中,假设工作区的容量为w,若不计输入、输出的时间,则对n个记录的文件而言,生成所有初始归并段所需时间为 O(n log w) 。
三. 简答题(6’´5)
1. 有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最佳?为什么?
采用基数排序方法最佳。
因单词长度相等,而只有26个字母组成,符合基数排序的条件。
因m<<n,故时间复杂性由O(m(n+rm))变成O(n)。
2. 对于一个栈,给出输入序列A,B,C,试给出全部可能的输出序列。若输入序列的长度为n,则可能的输出序列有多少?
ABC,ACB,BAC,BCA,CBA
C2nn/(n+1)
3. 求2-3树的结点数和叶子数的范围并证明之。
2h+1-1 ~ (3h+1-1)/2
2h ~ 3h
h为树的高度
用数学归纳法证明。 |