版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程(本科)第七章试题一、单项选择题1. 若搜索每一个元素的概率相等,则在长度为n的顺序表上搜索到表中任一元素的平均搜索长度为( )。 A. n B. n+1 C. (n-1)/2 D. (n+1)/22. 对长度为10的顺序表进行搜索,若搜索前面5个元素的概率相同,均为1/8,搜索后面5个元素的概率相同,均为3/40,则搜索到表中任一元素的平均搜索长度为( )。 A. 5.5 B. 5 C. 39/8 D. 19/43. 对长度为3的顺序表进行搜索,若搜索第一个元素的概率为1/2,搜索第二个元素的概率为1/3,搜索第三个元素的概率为1/6,则搜索到表中任一元素的平均搜索长度为( )。
2、 A. 5/3 B. 2 C. 7/3 D. 4/34. 对长度为n的有序单链表,若搜索每个元素的概率相等,则顺序搜索到表中任一元素的平均搜索长度为( )。 A. n/2 B. (n+1)/2 C. (n-1)/2 D. n/45. 对于长度为n的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为( )的值的向上取整。 A. log2(n+1) B. log2n C. n/2 D. (n+1)/26. 对于长度为n的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为( )的值的向下取整加一。 A. log2(n+1) B. log2n C. n/2 D. (n+1)/27.
3、 对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为( )的值除以9。 A. 20 B. 18 C. 25 D. 228. 对于长度为18的有序顺序表,若采用折半搜索,则搜索第15个元素的搜索长度为( )。 A. 3 B. 4 C. 5 D. 69. 对具有n个元素的有序顺序表进行折半搜索,则搜索任一元素的时间复杂度为( )。 A. O(n) B. O(n2) C. O(1) D. O(log2n)10. 在一棵高度为h的具有n个元素的二叉搜索树中,搜索所有元素的搜索长度中最大的为( )。 A. n B. log2n C. (h+1)/2 D. h+111. 从具
4、有n个结点的二叉搜索树中搜索一个元素时,在等概率情况下进行成功搜索的时间复杂度大致为( )。A. O(n) B. O(1) C. O(log2n) D. O(n2)12. 从具有n个结点的二叉搜索树中搜索一个元素时,在最坏情况下进行成功搜索的时间复杂度为( )。 A. O(n) B. O(1) C. O(log2n) D. O(n2)13. 向具有n个结点的二叉搜索树中插入一个元素时,其时间复杂度大致为( )。 A. O(1) B. O(log2n ) C. O(n) D. O(nlog2n)14. 在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的平衡因子的取值范围是( )。 A. -11
5、 B. -22 C. 12 D. 0115. 向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的调整过程,此调整分为( )种旋转类型。 A. 2 B. 3 C. 4 D. 516. 向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的左单或右单旋转的调整过程,此时需要修改相关( )个结点指针域的值。 A. 2 B. 3 C. 4 D. 517. 向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的双向旋转的调整过程,此时需要修改相关( )个结点指针域的值。 A. 2 B. 3 C. 4 D. 5参考答案:1. D2. C
6、3. A4. B5. A6. B7. C 8. A9. D10. D11. C12. A13. B14. A15. C16. A17. C二、填空题1. 以顺序搜索方法从长度为n的顺序表或单链表中搜索一个元素时,其时间复杂度为_。2. 对长度为n的搜索表进行搜索时,假定搜索第i个元素的概率为pi,搜索长度(即在搜索过程中依次同有关元素比较的总次数)为ci,则在搜索成功情况下的平均搜索长度的计算公式为_。3. 假定一个顺序表的长度为40,并假定搜索每个元素的概率都相同,则在搜索成功情况下的平均搜索长度为_。4. 以折半搜索方法从长度为n的有序表中搜索一个元素时,时间复杂度为_。5. 从有序表 (
7、12, 18, 30, 43, 56, 78, 82, 95) 中折半搜索元素56时,其搜索长度为_。6. 假定对长度n = 50的有序表进行折半搜索,则对应的判定树中最后一层的结点数为_个。7. 从一棵二叉搜索树中搜索一个元素时,若给定值小于根结点的值,则需要向_继续搜索。8. 从一棵二叉搜索树中搜索一个元素时,若给定值大于根结点的值,则需要向_继续搜索。9. 向一棵二叉搜索树中插入一个新元素时,若该新元素的值小于根结点的值,则应把它插入到根结点的_上。10. 向一棵二叉搜索树中插入一个新元素时,若该新元素的值大于根结点的值,则应把它插入到根结点的_上。11. 向一棵二叉搜索树_一个元素时,
8、若查找到的根结点为空值,则应把该元素结点链接到这个空指针位置上。12. 根据n个元素建立一棵二叉搜索树的时间复杂度性大致为_。13. 在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差的绝对值不超过_。14. 根据一组记录 ( 56, 42, 50, 64, 48 ) 依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为_的结点时需要进行旋转调整。 15. 根据一组记录 ( 56, 74, 63, 64, 48 ) 依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为63的结点时需要进行_调整。16. 根据一组记录 ( 56, 42,
9、 38, 64, 48 ) 依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为38的结点时需要进行_调整。17. 根据一组记录 ( 56, 42, 73, 50, 64, 48, 22 ) 依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为_的结点时才出现不平衡,需要进行旋转调整。 18. 在一棵AVL树(高度平衡的二叉搜索树)上进行插入或删除元素时,所需的时间复杂度为_。参考答案:1. O(n)2. 3. 20.54. O(log2n)5. 36. 197. 左子树8. 右子树9. 左子树10. 右子树11. 插入12. O(nlog2n)13. 114.
10、 5015. 先右后左双旋转16. 右单旋转17. 4818. O(lon2n) 三、判断题1. 在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。2. 进行折半搜索的表必须是顺序存储的有序表。3. 能够在链接存储的有序表上进行折半搜索,其时间复杂度与在顺序存储的有序表上相同。4. 假定用两个有序单链表表示两个集合,则这两个集合交运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。5. 假定用两个有序单链表表示两个集合,则这两个集合的差运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。6. 折半搜索
11、所对应的判定树,既是一棵二叉搜索树,又是一棵理想平衡二叉树(它的特点是除最底层结点外其他各层结点数都是满的,最底层的若干结点可能散布在该层各处)。7. 对二叉搜索树进行前序遍历得到的结点序列是一个有序序列。8. 在由n个元素组成的有序表上进行折半搜索时,对任一个元素进行搜索的长度(即比较次数)都不会大于log2n+1。9. 根据n个元素建立一棵二叉搜索树的时间复杂度大致为O(log2n)。10. 根据n个元素建立一棵二叉搜索树的时间复杂度大致为O(nlog2n)。11. 对于同一组记录,若生成二叉搜索树时插入记录的次序不同则得到不同结构的二叉搜索树。12. 对于同一组记录,生成二叉搜索树的结构
12、与插入记录的次序无关。13. 对于两棵具有相同记录集合而具有不同结构的二叉搜索树,按中序遍历得到的结点序列是相同的。14. 在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越大的结点离树根越近,则得到的是最优二叉搜索树。15. 在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树。参考答案:1. 是2. 是3. 否4. 是5. 否6. 是7. 否8. 是9. 否10. 是11. 是12. 否13. 是14. 是15. 否四、运算题1. 一个一维数组a10中存储着一个有序表,该有序表为:(15, 26, 34, 39, 45, 56, 58, 6
13、3, 74, 76 ),根据折半搜索所对应的判定树,写出该判定树的广义表表示,并求出在等概率情况下搜索成功的平均搜索长度。判定树的广义表表示:_平均搜索长度:_2. 已知一个有序表 ( 15, 26, 34, 39, 45, 56, 58, 63, 74, 76, 83, 94 ) 顺序存储于一维数组a12中,根据折半搜索过程填写成功搜索下表中所给元素34, 56, 58, 63, 94时的比较次数。34 56 58 63 94 元素值 比较次数3. 假定一个线性序列为 ( 38, 52, 25, 74, 68, 16, 30, 54, 90, 72 ),根据此线性序列中元素的排列次序生成一棵
14、二叉搜索树,求出对该二叉搜索树查找38, 74, 68, 30, 72等元素时的比较次数。38 74 68 30 72 待查元素: 比较次数:4. 假定一个线性序列为 ( 56, 27, 34, 95, 73, 16, 50, 62, 65 ),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树的高度(假定树根结点的高度为0)、度为2的结点个数和叶子结点个数。高度:_度为2的结点个数:_叶子结点个数:_5. 假定一个线性序列为 ( 38, 42, 55, 15, 23, 44, 30, 74, 48, 26 ),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树
15、中左子树为空的所有单支结点和右子树为空的所有单支结点,请按从小到大的次序排列写出。左子树为空的所有结点:_右子树为空的所有结点:_6. 已知一棵二叉搜索树的广义表表示为:28 (12 ( , 16), 49 (34 (30), 72 (63) ) ),按主教材介绍的删除算法,求出从中依次删除72, 12, 49, 28结点后得到的二叉搜索树的广义表表示。广义表表示:_7. 假定一组数据对象为 ( 40, 28, 16, 56, 50, 32, 30, 63 ),按次序插入每个对象生成一棵AVL树(高度平衡的二叉搜索树),根据插入过程填写下表,在相应位置填写所需要的调整类型:“左单旋转”、“右单
16、旋转”、“先左后右双旋转”、“先右后左双旋转”,若不需要旋转则填写“无”。40 28 16 56 50 32 30 63 数据: 调整:8. 假定一组数据对象为 ( 40, 28, 16, 56, 50, 32, 30, 63, 44, 38 ),按次序插入每个对象生成一棵AVL树(高度平衡的二叉搜索树),请回答插入后需调整的结点个数和插入后不调整的结点个数。插入时伴随旋转调整的结点个数:_插入不调整的结点个数:_ 9. 假定一组记录为 ( 36, 75, 83, 54, 12, 67, 60, 40 ),按次序插入每个结点生成一棵AVL树(高度平衡的二叉搜索树),请回答在插入时需进行“左单旋
17、转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,“不调整”的结点数各是多少?左单旋转结点个数:_右单旋转结点个数:_先左后右双旋转结点个数:_先右后左双旋转结点个数:_不调整结点个数:_10. 假定一组记录为 ( 38, 42, 55, 15, 23, 44, 30, 74, 48, 26 ),按次序插入每个结点生成一棵AVL树(高度平衡的二叉搜索树),给出最后得到的AVL树中度为2、度为1和度为0的结点个数。度为2的结点个数:_度为1的结点个数:_度为0的结点个数:_参考答案:1. 判定树的广义表表示:45 (26 (15, 34 ( , 39 ) ), 63 ( 56 ( ,
18、58 ), 74 ( , 76 ) ) ) /4分平均查找长度:29/10/2分34 56 58 63 9402 1 3 4 42. 判断结果元素值 比较次数 /对1个给1分,全对给6分38 74 68 30 7201 3 4 3 53. 判断结果待查元素:比较次数:/对1个给1分,全对给6分4. 高度:4 /2分度为2的结点个数:2 /2分叶子结点个数:3 /2分5. 左子树为空的结点:15, 23, 42, 44 /全对4分,否则不得分右子树为空的结点:30 /2分6. 广义表表示:30 (16 , 63 (34) )7. 插入结果和调整类型为40 28 16 56 50 32 30 63
19、无 无 右单旋 无 先右后左 先右后左 无 左单旋 双旋转 双旋转插入数据: 调整类型: 8. 插入时伴随旋转调整的结点个数:4 /3分,若误差1给1分,其余情况不得分插入不调整的结点个数:6 /3分,若误差1给1分,其余情况不得分9. 左单旋转结点个数:1 /1分右单旋转结点个数:0 /1分先左后右双旋转结点个数:1 /1分先右后左双旋转结点个数:0 /1分不调整结点个数:6 /2分10. 度为2的结点个数:4 /2分度为1的结点个数:1 /2分度为0的结点个数:5 /2分五、算法分析题1. 已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNo
20、de ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定具有BinTreeNode*类型的指针参数BST指向一棵二叉搜索树的根结点,试根据下面的函数定义指出此算法所能实现的功能。ElemType unknown ( BinTreeNode* BST ) if ( BST = NULL ) cerr 此树为空树 rightChild != NULL ) t = t-rightChild;return t-data; 算法功能:_2. 假定p1
21、和p2是两个有序单链表的表头指针,用来表示两个集合,单链表中的结点包括值域data和指向后继结点的指针域link,试根据下面算法指出算法功能。LinkNode* unknown ( LinkNode* p1, LinkNode* p2 ) LinkNode* p3 = new LinkNode, * p = p3;while ( p1 != NULL & p2 != NULL ) LinkNode* newptr = new LinkNode; if ( p1-data data ) newptr-data = p1-data; p1 = p1-link; else if ( p1-data
22、p2-data ) newptr-data = p2-data; p2 = p2-link; else newptr-data = p1-data; p1 = p1-link; p2 = p2-link; p3-link = newptr; p3 = newptr;if ( p2 != NULL ) p1 = p2;while (p1 != NULL ) p3 = p3-link = new LinkNode; p3-data = p1-data; p1 = p1-link; p3-link = NULL; return p-link;算法功能:_3. 假定p1和p2是两个单链表的表头指针,用
23、来表示两个集合,单链表中的结点包括值域data和指向后继结点的指针域link,试根据下面算法指出算法功能。int unknown ( LinkNode* p1, LinkNode* p2 ) while ( p2 != NULL ) LinkNode* r = p1;while ( r != NULL ) if ( p2-data = r-data ) break; r = r-link;if ( r = NULL ) return 0;p2 = p2-link;return 1; 算法功能:_4. 假定HL为保存一个集合的有序单链表的表头指针,item为一个新元素,HL单链表中的结点包括值域
24、data和指向后继结点的指针域link,试根据下面算法指出算法功能。void unknown ( LinkNode *& HL, const ElemType& item ) LinkNode* newptr; Newptr = new LinkNode; Newptr-data = item; if ( HL = NULL | item data ) newptr-link = HL; HL = newptr; return; LinkNode *cp, *ap; ap = HL; cp = HL-link;while (cp != NULL ) if ( item data ) break
25、; ap = cp; cp = cp-link; newptr-link = cp; ap-link = newptr;算法功能:_5. 已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNode ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定pt所指向的二叉搜索树的广义表表示为: 25 (10 (5, 16 (12) ), 40 (32 ( , 38) ) ),按照下面算法,则: (1)
26、执行unknown ( pt, 40 ) 调用后返回的值为_。 (2) 执行unknown ( pt, 38 ) 调用后返回的值为_。 (1) 执行unknown ( pt, 5 ) 调用后返回的值为_。 (1) 执行unknown ( pt, 60 ) 调用后返回的值为_。 int unknown ( BinTreeNode* t, ElemType x ) if ( t = NULL ) return 0; else if ( t-data = x ) return 1;else if ( t-data x ) return 1+unknown ( t-leftChild, x );els
27、ereturn 1+unknown ( t-rightChild, x );6. 已知二叉树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNode ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定具有BinTreeNode * 类型的指针参数bt指向一棵二叉树的根结点,引用参数x初始具有最小值(即小于树中所有结点的值),试根据下面的函数定义指出此算法所能实现的功能。 int unknown ( BinT
28、reeNode* bt, ElemType& x ) if ( bt = NULL ) return 1;else if (unknown ( bt-leftChild, x ) = 0 ) return 0; if ( bt-data data;if (unknown ( bt-rightChild, x ) = 0 ) return 0; else return 1; 算法功能:_参考答案: 1. 算法功能:从二叉搜索树BST中查找出具有最大值的结点并返回这个值。2. 算法功能:实现集合的并运算,即把有序单链表表示的两个集合合并为一个新的集合,并由函数返回新集合的表头指针。3. 算法功能:
29、判断p2单链表所代表的集合是否为p1单链表所代表的集合的子集合,若是则返回1否则返回0。4. 算法功能:向表示集合的有序单链表HL中插入一个新元素,使得插入后仍然保持集合单链表有序。5. (1) 2 /2分(2) 4 /2分(3) 3 /2分(4) 0 /2分6. 算法功能:判断二叉树bt是否为一棵二叉搜索树,若是则返回1否则返回0。六、算法设计题1. 假定元素类型为ElemType的一维数组Rn 中保存着按关键码升序排列的n个对象,对象的关键码域key的类型为KeyType,试按照下面的函数声明编写一个非递归算法,从一维数组Rn中用折半搜索法找出关键码等于k的对象,若搜索成功则返回对象位置(
30、即元素下标),否则返回-1。 int BinSearch ( ElemType R , int n, KeyType k );2. 已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNode ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定具有BinTreeNode * 类型的指针参数BST指向一棵二叉搜索树的根结点,试根据下面的函数声明编写一个非递归算法,从BST树中查找出具有x参数值的结点
31、,若查找成功则返回该结点的地址,否则返回NULL。 BinTreeNode* Find ( BinTreeNode* BST, ElemType& x );3. 已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNode ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定具有BinTreeNode * 类型的指针参数BST指向一棵二叉搜索树的根结点,试根据下面的函数声明编写一个递归算法,向BST
32、树中插入值为x的结点,若树中不存在x结点则进行插入并返回1表示插入成功,若树中已存在x结点则不插入并返回0表示插入失败。 int Insert ( BinTreeNode *& BST, const ElemType& x );4. 已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: struct BinTreeNode ElemType data;BinTreeNode *leftChild, *rightChild; ;其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。假定具有BinTreeNode * 类型的指针参数BST指向一棵二叉搜索树的根结点,试根据下面的函数声明编写一个非递归算法,向BST树中插入值为x的结点,若树中不存在x结点则进行插入并返回1表示插入成功,若树中已存在x结点则不插入并返回0表示插入失败。 int insert ( BinTreeNode*& BST, const ElemType& x );参考答案:1. 算法如下:int BinSearch ( ElemType
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计专业大一学期计划范文
- 乡镇文化站建成文艺晚会主持词
- 七夕节促销活动方案
- 范文新学期学习计划范文集锦十篇
- 个人工作总结(集锦14篇)
- 高等数学教程 上册 第4版 测试题 高数1-测试二
- 荒山租地合同协议书(2篇)
- 分段计费说课稿
- 南京工业大学浦江学院《汽车电气设备》2023-2024学年第一学期期末试卷
- 南京工业大学浦江学院《计算机设计》2022-2023学年期末试卷
- 信息技术教师专业发展
- 公职人员廉洁自律课件
- 建筑工程精细化管理培训讲解
- 学校领导测验题目和答案(经过打印)
- 风景园林专业职业生涯规划
- 食品安全员岗位的主要职责范本
- 《构成基础》课程习题及答案
- 中层干部考核测评表
- 钢琴专业的职业生涯规划书
- 《“要拿我当一挺机关枪使用”-纪念白求恩同志》
- 精美工业快速门施工方案
评论
0/150
提交评论