数据结构考试题5

合集下载

数据结构期末考试试题及答案

数据结构期末考试试题及答案

数据结构期末考试试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。

A. 编写代码的时间B. 代码的长度C. 执行代码所需的时间D. 执行代码所需的指令条数2. 下列关于队列的描述,错误的是()。

A. 队列是先进先出(FIFO)的线性表B. 队列允许在一端进行插入操作C. 队列的插入操作称为入队D. 队列的删除操作称为出栈3. 对于长度为n的有序数组,使用二分查找法查找一个元素的平均时间复杂度是()。

A. O(n)B. O(n^2)C. O(log n)D. O(1)4. 在图的遍历中,深度优先搜索(DFS)使用的数据结构是()。

A. 栈B. 队列C. 链表D. 数组5. 哈希表的冲突可以通过多种方式解决,以下哪种不是解决冲突的方法?()A. 开放寻址法B. 链地址法C. 线性探测法D. 排序法6. 一个完全二叉树共有700个节点,它的最大节点数是()。

A. 700B. 701C. 1400D. 14017. 快速排序算法的最坏情况发生在()。

A. 每次选择的基准都是最大值B. 数据已经有序C. 数据已经完全逆序D. 所有数据元素相等8. 在一个具有n个节点的二叉搜索树中,最坏情况下查找一个元素的时间复杂度是()。

A. O(n)B. O(log n)C. O(n^2)D. O(1)9. 堆排序算法中,将一个堆调整为最大堆或最小堆的过程称为()。

A. 堆调整B. 堆构建C. 堆分解D. 堆维护10. 以下哪个不是B树的特性?()A. 所有键值都存储在内部节点和叶子节点中B. 所有叶子节点都在同一层上C. 每个内部节点至多有m个子节点D. 每个内部节点的非叶子子节点都至少有m/2个子节点二、简答题(每题5分,共30分)1. 什么是递归?请举例说明递归算法的应用场景。

2. 请简述图的邻接矩阵和邻接表两种存储方式的优缺点。

3. 解释什么是平衡二叉树,并说明它为什么在实际应用中很重要。

数据结构期末考试试题及答案

数据结构期末考试试题及答案

数据结构期末考试试题及答案一、选择题1. 以下哪种数据结构是线性存储结构?A. 树B. 图C. 栈D. 队列答案:C2. 在链表中,如果一个节点既没有前驱也没有后继,那么这个节点被称作什么?A. 首节点B. 尾节点C. 中间节点D. 孤立节点答案:B3. 树的度是指什么?A. 树中节点的个数B. 树中最大的层次数C. 树的分支数D. 树的节点的度的最大值答案:C4. 在二叉搜索树中,若要查找给定值的节点,当查找失败时应返回的值是?A. -1B. 0C. 1D. 该值本身答案:A5. 快速排序算法的时间复杂度最坏情况下是多少?A. O(n)B. O(nlogn)C. O(n^2)D. O(n!)答案:C二、填空题1. 在顺序表中,元素的物理位置相邻的特点是________,这使得顺序表在________操作上具有较高的效率。

答案:连续性;访问2. 链表相比顺序表的优势在于它能够动态地________存储空间,并且________操作不需要移动大量元素。

答案:分配和释放;插入与删除3. 栈是一种________的数据结构,只允许在________进行插入和删除操作。

答案:后进先出;栈顶4. 图的遍历算法主要有两种,分别是________和________。

答案:深度优先搜索;广度优先搜索5. 哈夫曼树是一种特殊的二叉树,它常用于数据压缩,其构建过程是基于________原则。

答案:最小权值三、简答题1. 请简述数组和链表的优缺点。

答案:数组通过索引直接访问元素,访问速度快,但大小固定,插入和删除操作需要移动大量元素。

链表元素通过指针连接,可以动态分配大小,插入和删除效率高,但访问速度较慢,因为需要从头开始遍历。

2. 什么是二叉树的前序遍历、中序遍历和后序遍历?答案:二叉树的前序遍历是先访问根节点,然后遍历左子树,最后遍历右子树。

中序遍历是先遍历左子树,然后访问根节点,最后遍历右子树。

后序遍历是先遍历左子树,然后遍历右子树,最后访问根节点。

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案

《数据结构》期末考试试卷试题及答案第一部分:选择题(每题2分,共20分)1. 下面哪个数据结构是线性结构?A. 树B. 图C. 队列D. 网络流2. 下面哪个数据结构用于实现广度优先搜索算法?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. 堆第二部分:填空题(每题2分,共20分)1. 链表是一种______数据结构。

2. 二叉树的节点最多有______个子节点。

3. 堆是一种特殊的______。

4. 散列表的查找效率取决于______。

5. 图的遍历算法包括______和______。

6. 快速排序算法的平均时间复杂度为______。

7. 哈希表中的冲突解决方法有______和______。

8. 最小树算法包括______和______。

9. 最短路径算法包括______和______。

10. 并查集算法用于解决______问题。

第三部分:简答题(每题10分,共50分)1. 请简述栈和队列的区别。

2. 请简述二叉搜索树的特点。

3. 请简述哈希表的原理。

4. 请简述图的深度优先搜索算法。

5. 请简述最小树算法的原理。

第四部分:编程题(每题20分,共50分)1. 编写一个函数,实现链表的插入操作。

数据结构与算法设计考试试题

数据结构与算法设计考试试题

数据结构与算法设计考试试题一、选择题(共10题,每题2分,共20分)1. 下列哪种数据结构适合用于快速查找一个元素:A. 数组B. 栈C. 队列D. 哈希表2. 在二叉搜索树中,中序遍历可以得到一个有序的序列。

请问下列序列中哪个是中序遍历的结果:A. 2, 4, 6, 8, 10B. 10, 8, 6, 4, 2C. 2, 6, 4, 8, 10D. 6, 8, 4, 10, 23. 下面哪种排序算法的最好情况时间复杂度为O(nlogn):A. 冒泡排序B. 插入排序C. 选择排序D. 归并排序4. 哈希表通过将关键字映射到数组下标的方式来实现快速访问和插入。

请问下列哪种冲突处理方法是哈希表常用的:A. 开放地址法B. 建立链表法C. 折叠法D. 哈希函数法5. 堆排序是一种利用堆这种数据结构进行排序的算法,请问堆排序的时间复杂度是:A. O(n)B. O(nlogn)C. O(n^2)D. O(logn)6. Dijkstra算法是解决什么问题的经典算法:A. 最短路径问题B. 最大流问题C. 最小生成树问题D. 最长公共子序列问题7. 在图的表示中,邻接矩阵适合适用于什么类型的图:A. 稠密图B. 稀疏图C. 有向图D. 无向图8. 下面哪种搜索算法适用于有权图:A. 深度优先搜索B. 广度优先搜索C. Dijkstra算法D. A*算法9. 下面哪种数据结构不是线性结构:A. 数组B. 链表C. 栈D. 树10. 下列哪种数据结构可以实现先进先出的特性:A. 栈B. 队列C. 哈希表D. 树二、填空题(共5题,每题4分,共20分)1. 平衡二叉树的左子树和右子树的高度差不超过____。

2. 快速排序算法的时间复杂度为O(____)。

3. 广度优先搜索算法可以用来求解最____路径问题。

4. 图的最小生成树采用____算法来实现。

5. 哈希表的查找操作的平均时间复杂度为O(____)。

三、问答题(共5题,每题10分,共50分)1. 什么是数据结构?请举例说明一种常见的数据结构。

数据结构期中考试试卷

数据结构期中考试试卷

数据结构期中考试试卷一、选择题(每题2分,共20分)1. 在数据结构中,线性表是按照什么顺序排列的元素集合?A. 任意顺序B. 无序C. 有序D. 线性2. 链表与数组相比,其主要优点是什么?A. 节省空间B. 访问速度快C. 插入和删除操作灵活D. 内存分配简单3. 栈(Stack)是一种遵循什么原则的数据结构?A. 先进先出B. 先进后出C. 后进先出D. 后进后出4. 哈希表解决冲突最常用的方法是?A. 链接法B. 替换法C. 线性探测法D. 二次探测法5. 树和二叉树的主要区别是什么?A. 树的节点数可以比二叉树多B. 树的节点可以有多个子节点C. 树的节点可以没有子节点D. 树的节点可以有左子节点和右子节点6. 什么是二叉搜索树(BST)?A. 所有左子节点的值小于根节点的值B. 所有右子节点的值大于根节点的值C. 所有左子节点的值大于根节点的值D. A和B都正确7. 图的邻接矩阵表示法适用于哪种类型的图?A. 稠密图B. 稀疏图C. 有向图D. 无向图8. 排序算法的时间复杂度为O(n^2)的算法有哪些?A. 选择排序B. 冒泡排序C. 插入排序D. 所有以上9. 什么是递归?A. 函数调用自身B. 函数调用其他函数C. 循环结构D. 条件语句10. 动态规划主要用于解决什么问题?A. 排序问题B. 查找问题C. 优化问题D. 数据存储问题二、简答题(每题5分,共20分)1. 请简述链表和数组的区别。

2. 解释什么是图的深度优先搜索(DFS)。

3. 什么是二叉堆?请简述其性质。

4. 描述快速排序算法的基本思想。

三、编程题(每题15分,共30分)1. 编写一个函数,实现单链表的反转。

2. 编写一个函数,实现二叉树的前序遍历。

四、算法设计题(每题15分,共30分)1. 设计一个算法,用于在无序数组中找到第k小的元素。

2. 设计一个算法,实现最小生成树的克鲁斯卡尔算法。

五、综合应用题(10分)假设你正在开发一个在线图书管理系统,请设计一个数据结构来存储书籍信息,并实现以下功能:- 添加新书- 删除书籍- 查找特定书籍- 列出所有书籍请提供数据结构的设计思路和相应的伪代码。

(完整word版)数据结构考试题5

(完整word版)数据结构考试题5

要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。

每张答题纸都要写上姓名和学号。

一、单项选择题(每小题2分,共20小题,共计40分)1.某算法的空间复杂度为0(1),则。

A.该算法执行不需要任何辅助空间B.该算法执行所需辅助空间大小与问题规模n无关C.该算法执行不需要任何空间D.该算法执行所需全部空间大小与问题规模n无关2.在长度为n的顺序表中插入一个元素,对应算法的时间复杂度为。

A.0(1)B.O(log2n)C.0(n)D.0(n2)3.设线性表中有n个元素,以下运算中,在单链表上实现要比在顺序表上实现效率更高。

A.删除指定位置元素的后一个元素B.在最后一个元素的后面插入一个新元素C.顺序输出前k个元素D.交换第i个元素和第n-i+1个元素的值(i=1, 2,…,n)4.以下数据结构中元素之间为非线性关系的是。

A.栈B.队列C.线性表D.以上都不是5.若一个栈用数组data[1..n]存储,初始栈顶指针top为n+1,则以下元素x进栈的正确操作是。

A.top++;data[top]=x;B.data[top]=x;top++;C.top-- ;data[top]=x;D.data[top]=x;top --;6.若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变。

A.frontB.rearC.front 和rearD.以上都不队7.设循环队列中数组的下标是0〜N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则其元素个数为。

A.r-fB.r-f-1C.(r-f)%N+1D.(r-f+N)%N8.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中的叶子结点个数是。

A.5B.6C.7D.89. 一棵哈夫曼树中共有199个结点,它用于多少个字符的编码。

A.99B.100C.101D.19910.设森林F中有4棵树,第1、2、3、4棵树的结点个数分别为a、b、c、d,将森林F转换为一颗二叉树B,则二叉树B根结点的左子树上的结点个数是。

数据结构期末考试题及答案

数据结构期末考试题及答案

数据结构期末考试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构通常使用什么数据结构来实现?A. 链表B. 数组C. 栈D. 队列答案:B2. 以下哪个是二叉树的性质?A. 每个节点最多有两个孩子B. 每个节点最多有三个孩子C. 每个节点最多有四个孩子D. 每个节点最多有五个孩子答案:A3. 在图的遍历算法中,深度优先搜索(DFS)和广度优先搜索(BFS)的区别是什么?A. DFS使用队列,BFS使用栈B. DFS使用栈,BFS使用队列C. DFS和BFS都使用栈D. DFS和BFS都使用队列答案:B...20. 以下哪个排序算法的时间复杂度为O(n^2)?A. 冒泡排序B. 选择排序C. 插入排序D. 所有上述排序算法答案:D二、简答题(每题10分,共30分)1. 简述链表和数组的区别。

答案:链表和数组都是用来存储数据的线性数据结构。

数组是连续的内存空间,可以随机访问,但插入和删除操作效率较低;链表由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针,不支持随机访问,但插入和删除操作较为高效。

2. 什么是递归?请给出一个递归算法的例子。

答案:递归是一种算法设计技术,它允许函数调用自身来解决问题。

递归通常包含基本情况和递归情况。

例如,计算阶乘的递归算法:f(n) = n * f(n-1),其中基本情况是f(1) = 1。

...三、算法设计题(每题25分,共50分)1. 给定一个整数数组,请设计一个算法找出数组中的第k大元素。

答案:可以采用快速选择算法,类似于快速排序的划分过程,通过随机选择一个元素作为基准,将数组分为两部分,一部分包含比基准大的元素,另一部分包含比基准小的元素。

然后根据k与基准元素的位置关系,决定是继续在左侧子数组还是右侧子数组中进行查找。

2. 描述如何使用哈希表解决字符串匹配问题。

答案:哈希表可以用于实现字符串匹配的KMP算法。

首先,构建模式字符串的前缀函数,该函数用于记录模式字符串中每个位置的最长相同前缀和后缀的长度。

数据结构考试试题

数据结构考试试题

数据结构考试试题一、选择题(每题2分,共20分)1. 在数据结构中,队列是一种______。

A. 线性结构B. 非线性结构C. 树形结构D. 图结构2. 对于长度为n的线性表,在顺序存储结构中,从第i个元素(1≤i≤n)开始,连续做m(1≤m≤n-i+1)个元素的删除操作,需要进行的移动元素次数为______。

A. mB. n-mC. i+m-1D. m+n-m-13. 在二叉树的遍历中,先序遍历的顺序是______。

A. 根左右B. 左右根C. 左根右D. 左右根4. 哈希表的冲突可以通过多种方式解决,其中不是解决冲突的方法是______。

A. 开放寻址法B. 链地址法C. 建立一个公共溢出区D. 二分查找法5. 排序算法中,时间复杂度为O(nlogn)的算法是______。

A. 选择排序B. 冒泡排序C. 快速排序D. 插入排序6. 在图的遍历中,深度优先搜索(DFS)使用的是______。

A. 栈B. 队列C. 哈希表D. 数组7. 堆排序算法中,将堆中的最后一个元素和第一个元素交换,然后重新调整堆的过程称为______。

A. 堆调整B. 堆缩小C. 堆替换D. 堆重建8. 一个长度为n的链表,删除已知第k个元素的时间复杂度是______。

A. O(1)B. O(n)C. O(k)D. O(nk)9. 字符串“Knuth”在一棵二叉查找树中,按照K->n->u->t->h的顺序插入后,使用中序遍历得到的结果是______。

A. hKnuctB. hnKutC. hKnutD. hnuct10. 对于长度为n的数组,如果使用归并排序算法进行排序,其时间复杂度为______。

A. O(n)B. O(n^2)C. O(nlogn)D. O(logn)二、简答题(每题5分,共30分)11. 请简述什么是时间复杂度,并给出最好、最坏和平均时间复杂度的定义。

12. 解释一下什么是平衡二叉树,并说明它在数据结构中的重要性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

要求:所有的题目的解答均写在答题纸上,需写清楚题目的序号。

每张答题纸都要写 上姓名和学号。

一、单项选择题(每小题2分,共20小题,共计40分)1.某算法的空间复杂度为 0(1),则 。

A. 该算法执行不需要任何辅助空间B. 该算法执行所需辅助空间大小与问题规模 n 无关C. 该算法执行不需要任何空间D. 该算法执行所需全部空间大小与问题规模n 无关2. 在长度为n 的顺序表中插入一个元素,对应算法的时间复杂度为 ___________ 。

A.O(1)B.O(log 2n)C.O( n)D.O( n 2)3. 设线性表中有n 个元素,以下运算中, _________ 在单链表上实现要比在顺序表上实现 效率更高。

A. 删除指定位置元素的后一个元素B. 在最后一个元素的后面插入一个新元素C. 顺序输出前k 个元素D. 交换第i 个元素和第n-i+1个元素的值(i=1,2,…,n ) 4. 以下数据结构中元素之间为非线性关系的是 _________ 。

A. 栈B.队列C.线性表D.以上都不是5. 若一个栈用数组 data[1..n]存储,初始栈顶指针top 为n+1,则以下元素x 进栈的正确操作是 ______ 。

6. 若某循环队列有队首指针 front 和队尾指针rear ,在队不满时进队操作仅会改变 _____ 。

A.frontB.rearC.front 和 rearD.以上都不队7. 设循环队列中数组的下标是 0〜N-1,其队头、队尾指针分别为f 和r (f 指向队首元 素的前一位置,r 指向队尾元素),则其元素个数为 __________ 。

A.r-fB.r-f-1C.(r-f)% N+1D.(r-f+N)% N8.设树T 的度为4,其中度为1、 叶子结点个数是。

2、3、4的结点个数分别为 4、2、1、1,贝U T 中的A.5B.6C.7D.8 9. 一棵哈夫曼树中共有 199个结点,它用于多少个字符的编码 ___________10. 设森林F 中有4棵树,第A. top++;data[top]=x ;C.top-- ;data[top]=x;B. data[top]=x;top++; D.data[top]=x;top --;A.99B.100C.101D.1991、2、3、4棵树的结点个数分别为a、b、c、d,将森林F转换为一颗二叉树B,则二叉树B根结点的左子树上的结点个数是__________ 。

A.a-1B.aC. a+b+cD.b+c+d11. 下列关于图的叙述中,正确的是________ 。

I .回路是简单路径n.存储稀疏图,用邻接矩阵比邻接表更省空间川.若有向图中存在拓扑序列,则该图不存在回路A.仅nB.仅i、nC.仅川D.仅I、川12. 以下关于有向图的说法中,正确的是 _______ 。

A. 强连通图是任何顶点到其他所有顶点都有边B. 完全有向图一定是强连通图C. 有向图中任一顶点的入度等于出度D. 有向图边集的子集和顶点集的子集可构成原有向图的子图13. 无向图的邻接矩阵是一个_____ 。

A.对称矩阵B.零矩阵C.上三角矩阵D.对角矩阵14. 如果从无向图的任一顶点出发进行一次广度优先遍历即可访问所有顶点,则该图_. r曰疋是。

A.完全图B.连通图C.有回路D. 一棵树15. 用Dijkstra算法求一个带权有向图G中从顶点0出发的最短路径,在算法执行的某时刻,S={0,2,3,4},下一步选取的目标顶点可能是________ 。

A.顶点2B.顶点3C.顶点4D.顶点716. __________________________ 哈希表中出现冲突是指。

A. 两个元素具有相同的序号B. 两个元素的关键字不同,而其他属性相同C. 数据元素过多D. 两个元素的关键字不同,而对应的哈希函数值(存储地址)相同17. 适合于折半查找的数据组织方式是_________ 。

A.以链表存储的线性表B.以顺序表存储的任意线性表C. 以链表存储的有序线性表D.以顺序表存储的有序线性表18. 对有n个记录的表进行直接插入排序,在最好情况下需比较 __________ 次关键字。

A.n-1B.n+1C.n/2D.n(n -1)/219. 若数据元素序列{11,12,15,7,8,9,23,1,5}是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是 ________ 。

A.冒泡排序B.直接插入排序C.选择排序D. 二路归并排序20. 对一组数据(25,84,21,47,15,27,68,35,20)进行排序,前3趟的排序结果如下:第 1 趟:20, 15, 21, 25, 47, 27, 68, 35, 84第 2 趟:15, 20, 21, 25, 35, 27, 47, 68, 84 第 3 趟:15, 20, 21, 25, 27, 35, 47, 68, 84 则所采用的排序方法是 _______ 。

A.简单选择排序B.希尔排序C.二路归并排序、问答题(共4小题,共计35分)1. ( 10分)对于如图1所示的带权无向图,直接给出利用普里姆算法(从顶点 0开始构造)和克鲁斯卡尔算法构造出的最小生成树的结果(注意:按求解的顺序给出最小生成2. ( 10分)假设一棵二叉排序树的关键字为单个字母,其后序遍历序列为ACDBFIJHGE ,回答以下问题:(1) 画出该二叉排序树。

(6分)(2) 求在等概率下的查找成功的平均查找长度。

(2分) (3) 求在等概率下的查找不成功的平均查找长度。

(2分) 3.(8分)已知序列{15,5,16,2,25,8,20,9,18,12},给出采用二路归并排序法对该序列作升序排序时的每一趟的结果。

4.( 7分)简要回答下列关于堆排序中堆的一些问题:(1) 通常堆采用顺序还是链式存储结构?( 3分)(2) 设有一个小根堆,即堆中任意结点的关键字均小于它的左孩子和右孩子的关键字。

其中具有最大关键字的结点可能在什么地方? (4分)三、算法设计题(共2小题,共计25 分)1.( 10分)某带头结点的非空单链表 L 中所有元素为整数,结点类型定义如下:typedef struct node { int data;struct node *next; } LinkNode;设计一个尽可能高效的算法, 将所有小于零的结点移到所有大于等于零的结点的前面。

2.( 15分)假设二叉树中有 n 个结点,每个结点值为单个字符,而且所有结点值均不相同,采用二叉链存储结构存储,其结点类型定义如下:typedef struct node { char data; D.快速排序树的所有边,每条边用struct node *lchild,*rchild;} BTNode;请完成以下任务:(1)设计一个算法,在二叉树b中查找x结点(指结点值为x的结点),若找到该结点,返回其地址,否则返回NULL。

给出你设计的算法的时间复杂度。

(8分)(2)设计一个算法,利用(1)小题设计的算法输出二叉树b中x结点的所有子孙结点值。

(7分)“数据结构”考试试题(A )参考答案1. B2. C3. A4. D5. C6. B7. D8. D9. B10. A11. C12. B13. A14. B15. D16. D17. D18. A19. B20. D问答题(共4小题,共计35分)1. (10分)答案:利用普里姆算法从顶点0出发构造的最小生成树为:{(0,1),(0,3),(1,2),(2,5),(5,4)},(5 分)。

利用克鲁斯卡尔算法构造出的最小生成树为:{(0,1),(0,3),(1,2),(5,4),(2,5)},( 5分)。

说明:顺序错误不给分。

2. (10分)答案:(1)该二叉排序树的后序遍历序列为ACDBFIJHGE,则中序遍历序列为ABCDEFGHIJ,由后序序列和中序序列构造的二叉排序树如图2所示。

(6分)(2) ASL 成功=(1 X1+2X2+4X3+2X4+1 X5)/10=3。

(2 分)(3) ASL 不成功=(6 X3+3X4+2X5)/11=40/11=3.64。

(2 分)、单项选择题(每小题2分,共20小题,共计40分)3. (8分)答案:采用二路归并排序法排序的各趟结果如图3所示。

(每趟2分)排序前:15,5, 16,2, 25,8, 20,9, 18,12 length=1:5, 15,2, 16,8, 25,9, 20,12,18length=2:2, 5,15, 16,8, 9, 20,25,12,18 length=4:2, 5,8, 9, 15,16,20,25,12,18length=8:2, 5,8, 9, 12,15,16,18,20,25 排序后:2, 5,8, 9, 12,15,16,18,20,25图3各趟排序结果4. (7分)答案:(1)通常堆采用顺序存储结构。

(3分)(2)小根堆中具有最大关键字的结点只可能出现在叶子结点中。

因为最小堆的最小关键字的结点必是根结点,而最大关键字的结点由偏序关系可知,只有叶子结点可能是最大关键字的结点。

(4分)算法设计题(共2小题,共计25分)1. ( 10分)答案:void Move(LinkNode *&L){ LinkNode *p=L->next,*pre=L; while(p!=NULL && p->data<0){ pre=p;p=pre->next;}while (p!=NULL){ if (p->data<0){ pre->next=p->next;p->next=L->next;L->next=p;p=pre->next;}else{ pre=p; p=p->next;}}}2. ( 15分)答案:(1)( 7分)BTNode *Findx(BTNode *b,char x) { BTNode *p;if (b==NULL)return NULL;//跳过小于0的结点//若*p结点值小于0//从链表中删除*p结点//将*p结点插入到头结点之后〃p 指向*pre之后结点,pre不变//若*p结点值不小于0//pre 、p同步后移一个结点/ /在二叉树b中查找x结点else{ if (b_>data==x)return b;p=Findx(b->lchild,x);if (p!=NULL)return p;return Findx(b->rchild,x);}}算法的时间复杂度为0( n) (1分)。

(2)(7分)void Sons(BTNode *b,char x) //输出x结点的子孙,初始时b指向x结点{ if (b!=NULL){ if (b->data!=x)printf("%c ",b->data);Sons(b->lchild,x);Sons(b->rchild,x);}}void OutSons(BTNode *b,char x) // 输出二叉树b中x结点的所有子孙结点值{ BNode *p= Findx(b,x);if (p!=NULL)Sons(p,x);}。

相关文档
最新文档