elseBSearch(a,x,mid+1,high);
6-9要求:
(1)写出求1,2,3,......,n的n个数累加的递推定义式;
(2)编写求1,2,3,……山的“个数累加的递归算法,假设n个数存放在数组a中。
6-10要求:
(1)写出求1,2,3,小的n个数连乘的递推定义式;
(2)编写求1,2,3,小的n个数连乘的递归算法,假设n个数存放在数组a中。
6-11设a是有n个整数类型数据元素的数组,试编写求a中最大值的递归算法。
6-12设计输出如下形式数值的算法。
1
22
333nnn…n
要求:
(1)把算法设计成递归结构的算法;
(2)画出上述递归算法的调用执行过程;
(3)把算法设计成循坏结构。
7-1什么叫冇序树?
什么叫无序树?
一棵度为2的树和一棵二叉树的区别是什么?
7-2什么叫满二义树?
什么叫完全二义树?
举出一个满二义树和一个完全二叉树的例子。
7-3说出具冇3个结点的树和具冇3个结点的二叉树的所冇不同形态的个数,并分别画出他们的形态。
7-4给岀图7・20所示二叉树的先序遍历、中序遍历、后序遍历和层序遍历得到的结点序
列。
图7-20二叉树
7-5简叙线索二叉树的用途和中序线索二叉树的构造方法。
7-6画出图7-20(a)所示二义树的前序线索二叉树、中序线索二叉树和后序线索二叉树。
7-7在一棵二叉树中,什么叫从A结点到B结点的路径?
什么叫从A结点到B结点的路径长度?
什么叫二叉树的路径长度?
7-8在一棵叶结点带权的二叉树中,什么叫二叉树的带权路径长度?
什么叫哈夫曼树?
哈夫曼树有什么用途?
7-9研究树和二叉树相互Z间转换方法的意义是什么?
7・1()画出图7・21所示树的先根遍历和示根遍历得到的结点序列。
图7・21树
7-11把图7・21所示树转换为二义树。
给出该二义树的先序遍历、屮序遍历和后序遍历结果,并对比分析此遍历结果和习题7-1()得出的树的先根遍历和示根遍历结果。
7-12把图7-20所示二叉树转换为树。
7-13画出和下列已知结点序列对应的二叉树:
1)该二叉树的中序遍历结点访问序列为DCBGEAHF1JK;2)该二叉树的后序遍历结点访问序列为DCEGBFHKJIAo
7-14高度为h的完全二叉树屮,最多有多少个结点?
最少有多少个结点?
7-15设二叉树屮所有非叶了结点均有非空左右了二叉树,并且叶了结点数目为n,问:
该二叉树中共冇多少个结点?
7-16假设用于通讯的电文仅由5个字母{A,B,C,D,E}组成,字母在电文中出现的次数分别为2,4,5,7,80试为这5个字母设计哈夫曼编码。
7-17若一棵树有g个度为1的结点,有g个度为2的结点,......,有叫个度为k的结点,问:
树中共有多少个叶结点?
7-18证明:
若哈夫曼树中冇n个叶结点则该哈夫曼树中共冇2n-l个结点。
7-19编写求二叉树中叶结点个数的函数(提示:
这是一个遍历问题)。
7-20编写判断一棵二叉树是否是完全二叉树的函数(提示:
这是一个遍历问题)。
8-1已知图G=(V,E),其中V二{a,b,c,d,e,f,g},E={,,,,,,,,,,,},请画出图G,并画出图G的邻接矩阵和图G的邻接表。
8-2对于图8・17所示的有向图,要求给出:
(1)该有向图的邻接矩阵存储结构;
(2)该冇向图的邻接表存储结构;
(3)设顶点A为访问的第一个顶点,按照邻接矩阵存储结构给出的每个顶点的邻接顶点次序,给出该有向图的深度优先遍历的顶点访问序列。
(4)设顶点A为访问的第一个顶点,按照邻接矩阵存储结构给出的每个顶点的邻接顶点次序,给出该有向图的广度优先遍历的顶点访问序列。
图8-17有向图
8-3对于图8・18所示的无向带权图,要求:
(1)根据普里姆算法思想,画岀构造该无向带权图最小牛成树的过程;
(2)根据克鲁斯卡尔算法思想,画出构造该无向带权图最小生成树的过程。
图8・18无向带权图
8-4对于图8-19所示的有向带权图,根据狄克斯特拉算法思想,血出生成从顶点A到其余各顶点最短路径的过程。
8・5证明:
无向完全图中一定Wn(n-1)/2条边。
8-6证明:
有向完全图中一定有n(n-l)条弧。
8-7编写函数,求邻接矩阵存储结构的有向图G屮各顶点的入度。
8-8编写函数,求邻接矩阵存储结构的有向图G中各顶点的出度。
9-1什么是关键字?
什么是主关键字?
什么是次关键字?
9-2什么是稳定的排序算法?
什么是不稳定的排序算法?
对同一个问题,若有一个算法是稳定的,另一个算法是不稳定的,哪一种算法更好?
9-3什么是内部排序?
什么是外部排序?
9-4设数据元素关键字序列为{475,137,481,219,382,674,350,326,815,506},分别写出执行下列排序算法时,各趟排序后的关键字序列:
(1)希尔排序(增量d=5,3,l)⑵快速排序
(3)堆排序(4)归并排序
(5)基数排序
9-5举例说明直接选择排序是不稳定的排序。
9-6举例说明希尔排序、快速排序和堆排序是不稳定的排序。
9-7判断下列序列是否为堆,若是堆则进一步指出是最大堆还是最小堆。
(1)(50,36,41,19,23,4,20,18,12,22)
(2)(43,5,47,1,19,11,59,15,48,41)
(3)(50,36,41,19,23,20,18,12,22)
(4)(9,13,17,21,22,31,33,24,27,23)
9-8设待排序的关键字序列为{11,4,18,33,29,9,18*,21,5,19},画出堆排序时形成初始堆和第一次堆顶元素第一次交换后堆的变化过程。
9-9编写一个测试希尔排序算法函数ShellSort()的测试主函数。
测试数据为(43,5,47,1,19,11,59,15,48,41)。
9-10设待排序数据元素的关键字为整数类型,编写函数实现在05丿的吋间复朵度内和0(/丿的空间复杂度内重排数组a,使得将所有取负值的关键字排在所有取非负值的关键字Z刖。
9-11编写函数实现单链表类数据元素的直接插入排序。
9-12直接选择排序算法是不稳定的排序算法。
这主要是由于每次从无序记录区选出最小记录后,与无序区的第一个记录交换而引起的,因为交换可能引起关键字相同的数据元素位査发生变化。
如果在选出最小记录后,将它前面的无序记录依次后移,然后再将最小记录放在有序区的后面,这样就能保证排序算法的稳定性。
编写一个稳定的肓接选择排序函数。
10-1什么叫静态查找?
什么叫动态查找?
什么样的存储结构适宜丁•进行静态查找?
什么样的存储结构适宜于进行动态查找?
10-2什么叫平均查找长度?
写出平均查找长度的定义。
10-3索引表由哪几项组成?
什么叫完全索引表?
怎样构造完全索引表?
10-4什么叫等长索引表?
什么叫不等长索引表?
10-5为什么B_树上的查找效率比二叉排序树上的查找效率高?
10-6在哈希表中,发生冲突的可能性与哪些因素冇关?
为什么?
10-7已知一个个数为12的数据元素序列为{Dec,Feb,Nov,Oct,June,Sept,Aug,Apr,May,July,Jan,Mar},要求:
(1)按各数据元索的顺序构造一棵二叉排序树。
(2)设各数据元素的查找概率相等,给出该二叉排序树的平均查找长度。
(注:
字母的大小是指字母的ASCII码数值大小)
10-8对于一棵初始为空的3阶B_树,要求:
(1)给出按数据元素序列{20,30,50,52,60,6&70}构造3阶B—树的图示过程。
(2)给出删除关键字50和68的图示过程。
10-9设有数据元素序列{11,23,35,47,51,60,75,88,90,102,113,126,},用除留余数法构造哈希表,要求:
(1)设计哈希表的长度取值m。
(2)画出用开放定址法的线性探查法解决哈希冲突的哈希表结构。
(3)画出用链表法解决哈希冲突的哈希表结构。
10-10冇n个结点的二叉排序树共冇多少种不同形态?