软件学院数据结构与算法分析期末试题(2006级B)
数据结构期末考试题及答案
![数据结构期末考试题及答案](https://img.taocdn.com/s3/m/90551edf1b37f111f18583d049649b6648d709ce.png)
数据结构期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。
A. 执行算法所需要的计算工作量B. 执行算法所需要的存储空间C. 执行算法所需要的时间D. 执行算法所需要的内存大小答案:A2. 线性表的顺序存储结构和链式存储结构相比,其优点是()。
A. 插入和删除操作快B. 存储密度高C. 存储空间可以动态分配D. 存储空间利用率高答案:B3. 栈的基本运算中,不包括()。
A. 入栈B. 出栈C. 取栈顶元素D. 排序答案:D4. 在二叉树的遍历中,先序遍历的顺序是()。
A. 先根后子B. 先子后根C. 先左后右D. 先右后左答案:A5. 哈希表解决冲突的方法不包括()。
A. 分离链接法B. 线性探测法C. 链地址法D. 二分查找法答案:D6. 一个图的邻接矩阵表示法中,若第i行第j列的元素为1,则表示()。
A. 顶点i和顶点j之间有一条边B. 顶点i和顶点j之间没有边C. 顶点i和顶点j之间有n条边D. 顶点i和顶点j之间有m条边答案:A7. 在查找算法中,二分查找法适用于()。
A. 线性表B. 哈希表C. 树形结构D. 图结构答案:A8. 快速排序算法的时间复杂度在最坏情况下是()。
A. O(n)B. O(nlogn)C. O(n^2)D. O(2^n)答案:C9. 一个有n个顶点的无向图,其边数最多为()。
A. nB. n(n-1)/2C. n(n+1)/2D. 2n答案:B10. 以下哪个不是排序算法()。
A. 冒泡排序B. 选择排序C. 插入排序D. 归并排序答案:D二、填空题(每题2分,共20分)1. 在数据结构中,一个算法的空间复杂度是指算法执行过程中所需要的___________。
答案:存储空间2. 线性表的链式存储结构中,每个节点包含___________和___________。
答案:数据元素,指针3. 栈的特点是___________,___________。
数据结构与算法分析考试试题
![数据结构与算法分析考试试题](https://img.taocdn.com/s3/m/d27a52513868011ca300a6c30c2259010202f3ff.png)
数据结构与算法分析考试试题一、选择题(共 20 小题,每小题 3 分,共 60 分)1、在一个具有 n 个元素的顺序表中,查找一个元素的平均时间复杂度为()A O(n)B O(logn)C O(nlogn)D O(n²)2、以下数据结构中,哪一个不是线性结构()A 栈B 队列C 二叉树D 线性表3、一个栈的入栈序列是 1,2,3,4,5,则栈的不可能的出栈序列是()A 5,4,3,2,1B 4,5,3,2,1C 4,3,5,1,2D 1,2,3,4,54、若一棵二叉树的先序遍历序列为 ABCDEFG,中序遍历序列为CBDAEGF,则其后序遍历序列为()A CDBGFEAB CDBFGEAC CDBAGFED BCDAGFE5、具有 n 个顶点的无向完全图的边数为()A n(n 1)B n(n 1) / 2C n(n + 1) / 2D n²6、以下排序算法中,在最坏情况下时间复杂度不是O(n²)的是()A 冒泡排序B 选择排序C 插入排序D 快速排序7、在一个长度为 n 的顺序表中,删除第 i 个元素(1≤i≤n)时,需要向前移动()个元素。
A n iB iC n i + 1D n i 18、对于一个具有 n 个顶点和 e 条边的有向图,其邻接表表示中,所有顶点的边表中边的总数为()A eB 2eC e/2D n(e 1)9、以下关于哈夫曼树的描述,错误的是()A 哈夫曼树是带权路径长度最短的二叉树B 哈夫曼树中没有度为 1 的节点C 哈夫曼树中两个权值最小的节点一定是兄弟节点D 哈夫曼树中每个节点的权值等于其左右子树权值之和10、用邻接矩阵存储一个具有 n 个顶点的无向图时,矩阵的大小为()A nB n²C (n 1)²D (n + 1)²11、下列关于堆的描述,正确的是()A 大根堆中,每个节点的值都大于其左右子节点的值B 小根堆中,每个节点的值都小于其左右子节点的值C 堆一定是完全二叉树D 以上都对12、在一个具有 n 个单元的顺序存储的循环队列中,假定 front 和rear 分别为队头指针和队尾指针,则判断队满的条件是()A (rear + 1) % n == frontB (front + 1) % n == rearC rear == frontD rear == 013、已知一个图的邻接表如下所示,从顶点 1 出发,按深度优先搜索法进行遍历,则得到的一种可能的顶点序列为()|顶点|邻接顶点|||||1|2, 3||2|4, 5||3|5||4|6||5|6||6| |A 1, 2, 4, 6, 5, 3B 1, 2, 5, 3, 4, 6C 1, 2, 3, 5, 4, 6D 1, 3, 2, 4, 5, 614、对线性表进行二分查找时,要求线性表必须()A 以顺序方式存储,且元素按值有序排列B 以顺序方式存储,且元素按值无序排列C 以链式方式存储,且元素按值有序排列D 以链式方式存储,且元素按值无序排列15、以下算法的时间复杂度为 O(nlogn)的是()A 顺序查找B 折半查找C 冒泡排序D 归并排序16、若某链表最常用的操作是在最后一个节点之后插入一个节点和删除最后一个节点,则采用()存储方式最节省时间。
数据结构B期末考试-B卷和参考答案.docx
![数据结构B期末考试-B卷和参考答案.docx](https://img.taocdn.com/s3/m/729c190a591b6bd97f192279168884868762b82b.png)
一、单项选择题(每小题2分,共30分)1.下列关于栈的叙述中,正确的是()oA.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对2.在数据结构中,与所使用的计算机硬件无关的是数据的()结构。
A.逻辑B.存储C.逻辑和存储D.物理3.以下说法正确的是()oA.数据项是数据的基本单位B.数据元素是数据的最小单位C.数据结构是带结构的数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构4.六个元素按照6, 5, 4, 3, 2, 1的顺序入栈,下列哪一个是合法的出栈序列?()A.546132B. 453126C. 346512D. 2341565.设树的度为4,其中度为1、2、3、4的结点个数分别是4、2、1、2,则树中叶子个数为()A.8B. 9C. 10D. 116.分别用以下序列构造二叉排序树,与用其他三个序列构造的结果不同的是()A, (100,80,90,60,120,110,130) B. (100,120,110,130,80, 60,90)C, (100,60,80,90,120,110,130)D, (100,80, 60,90,120,130,110)7.下列陈述中正确的是()A.二叉树是度为2的有序树B.二叉树中结点只有一个孩子时无左右之分C.二叉树中必有度为2的结点D.二叉树中最多只有两棵子树,并且有左右之分8.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()A. eB. 2eC. n2—eD. n2—2e9.栈和队列都是()A.限制存取位置的线性结构B.顺序存储的线性结构C.链式存储的线性结构D.限制存取位置的非线性结构10.在具有n个叶子结点的严格二叉树(即结点的度要么是0要么是2)中,结点总数为()A. 2n+lB. 2nC. 2n・lD. 2n-211.在循环双链表的P所指的结点之前插入S所指结点的操作是()oA.p->prior = s; s->next = p; p->prior->next = s; s->prior = p->priorB.p->prior = s; p->prior->next = s; s->next = p; s->prior = p->priorC.s->next = p; s->prior = p->prior; p->prior = s; p->prior->next = sD.s->next = p; s->prior = p->prior; p->prior->next = s; p->prior = s12,单链表中,增加一个头结点的目的是为了()oA.使单链表至少有一个结点B.标识表结点中首结点的位置C.方便算法的实现D.说明单链表是线性表的链式存储13,对一个满二叉树,m个叶子,n个结点,深度为h,则()。
数据结构与算法期末考试题及答案
![数据结构与算法期末考试题及答案](https://img.taocdn.com/s3/m/fc394905bc64783e0912a21614791711cc797996.png)
数据结构与算法期末考试题及答案一、选择题1. 用于分离由加权无向边组成的完全连通图中连通分量中不相邻顶点的单纯形算法是(C)A. 最小生成树算法B. 广度优先搜索算法C. 最大流算法D. 关键路径算法2. 要设计一个使用图来表示的行业里的公司的决策问题,图的顶点应该表示(B)A. 公司拥有的资源B. 公司所面对的决策选择C. 公司内部的组织结构D. 公司的竞争对手3. 算法的计算时间复杂度O(log2n)中的n表示(A)A. 求解问题规模B. 求解算法所处理的数据量C. 求解问题中所涉及的参数量D. 求解算法所进行的求解步骤4. 以树形结构存储的优先队列中元素出队的操作时间复杂度是(C)A. O(1)B. O(n)C. O(log2n)D. O(n2)5. 以下关于贝尔曼-福特算法的描述错误的是(A)A. 贝尔曼-福特算法是求图 G=(V,E)最小生成树的法B. 贝尔曼-福特算法克服了Prim算法因存储顶点增量重复而带来的内存浪费C. 求解过程中,要维护贝尔曼-福特树中任意两个顶点之间的最短距离D. 贝尔曼-福特算法可以解决单源最短路径问题二、简答题1. 请说明拓扑排序的概念,以及如何使用拓扑排序解决求解关键路径的问题。
拓扑排序是指对有向无环图进行排序,得到一个顶点的线性序列,使得对于图中的每条有向边(u,v),均有u在v之前。
拓扑排序可用于求解关键路径,首先对所有活动按照拓扑排序的方法进行排序,计算该活动的最早开始时间ESi和最晚开始时间LSi,若ESi=LSi,则此活动运行期间不能延迟,为关键活动;若ESi≠LSi,则此活动可以合理推迟,不为关键活动。
算法与数据结构期末考试卷
![算法与数据结构期末考试卷](https://img.taocdn.com/s3/m/0466515478563c1ec5da50e2524de518974bd36d.png)
算法与数据结构期末考试卷一、选择题(每题2分,共20分)1. 在数据结构中,线性表的顺序存储结构被称为:A. 链表B. 栈C. 队列D. 数组2. 快速排序算法的时间复杂度在最坏情况下是:A. O(n)B. O(n log n)C. O(n^2)D. O(log n)3. 哈希表解决冲突最常用的方法是:A. 链地址法B. 线性探测法C. 二次探测法D. 双重哈希法4. 二叉树的遍历方式不包括:A. 前序遍历B. 中序遍历C. 后序遍历D. 广度优先遍历5. 堆排序算法是基于:A. 链表B. 栈C. 队列D. 堆...(此处省略其他选择题)二、简答题(每题10分,共20分)1. 请简述二叉搜索树与普通二叉树的区别。
2. 什么是递归?请举例说明递归在算法中的应用。
三、编程题(每题15分,共30分)1. 编写一个函数,实现对链表的反转。
2. 编写一个函数,实现快速排序算法。
四、综合应用题(每题15分,共30分)1. 描述如何使用哈希表实现一个简单的数据库索引系统。
2. 假设你有一个数组,其中包含了一些重复的数值,请编写一个算法来找出数组中出现次数超过数组长度一半的数值。
五、论述题(每题15分,共15分)1. 论述动态规划与贪心算法的区别,并给出一个动态规划问题的例子。
六、附加题(10分,可选做)1. 请设计一个算法,用于检测一个字符串是否是回文。
如果字符串是回文,请返回True,否则返回False。
注意:本试卷中所有题目的答案必须以书面形式给出,编程题需要提供完整的代码实现。
祝各位考生考试顺利,取得优异成绩。
数据结构%2B期末复习题及答案
![数据结构%2B期末复习题及答案](https://img.taocdn.com/s3/m/ae98ec4ae45c3b3567ec8bf2.png)
计算机学院数据结构与算法分析期末试题答案一、单项选择题(每小题2 分,共20分)1.在下面给出的链式存储结构中,能在O(1)时间内完成在指定结点p之前插入元素x 的结构是为()。
A)单向链表B)单向循环链表C)带表头的单向链表D)双向循环链表参考答案:D)2.栈应用的典型事例是()。
A)排队B)查找C)归并D)用“算符优先法”进行表达式求值参考答案:D)3.一般情况下,将递归算法转换成等价的非递归算法应该设置()。
A)栈B)队列C)堆栈或队列D)数组参考答案:A)4.()是C语言中"abcd32lABCD"的子串。
A)abed B)d2lAB C)"abcABC" D)"21AB"参考答案:D)5.有一矩阵为A[-3:1,2:6],每个元素占一个存储单元,存储的首地址为100,以行序为主,则元素a-1,4的地址为()。
A)111 B)112 C)113 D)125参考答案:B)6.从L=((apple,pear),(banana,orange))中,取出pear元素的表达式为()。
A)head(tail(L)) B)head(head(tail(L)))C)tail(head(tail(L))) D)head (tail (head(L)))参考答案:D)7.若一个具有N个顶点,K条边的无向图是一个森林(N>K),则该森林中必有()棵树。
A)K B)N C)N-K D)1【分析】因为一棵具有n个顶点的树有n-1条边,因此设此森林中有m棵树,每棵树具有的顶点数为v i(l≤i≤m),则:v1+v2+…+v m=N (1)(v1-1)+(v2-1)+…+(v m-1)=K (2)由(1)-(2)可知N-K为森林所含树的棵数。
参考答案:C)8.采用分块查找时,如某线性表中共有256个元素,查找每个元素的概率相同,假设采用顺序查找来确定元素所在的块,则每块包含()个结点时,平均查找长度最小。
数据结构期末考试试题及答案
![数据结构期末考试试题及答案](https://img.taocdn.com/s3/m/942cce60ae45b307e87101f69e3143323968f5d7.png)
数据结构期末考试试题及答案数据结构期末考试试题及答案随着信息时代的到来,数据的处理和管理变得愈发重要。
数据结构作为计算机科学的基础课程之一,对于培养学生的编程思维和解决问题的能力具有重要意义。
数据结构期末考试是对学生掌握该课程知识的一次全面检验。
本文将为大家提供一些常见的数据结构期末考试试题及答案,希望能够对大家复习备考有所帮助。
1. 请解释什么是数据结构,并举例说明。
数据结构是指在计算机中组织和存储数据的方式。
它关注的是数据的逻辑关系和操作,而不仅仅是数据本身。
常见的数据结构有数组、链表、栈、队列、树等。
举例来说,数组是一种线性结构,它将相同类型的数据元素按照一定的顺序存储在一块连续的内存空间中,可以通过索引来访问和修改元素。
2. 请说明数组和链表的区别,并分别列举它们的优缺点。
数组和链表都是常见的线性数据结构,但它们在存储方式和操作上有所不同。
数组将元素存储在连续的内存空间中,通过索引可以直接访问和修改元素。
链表则通过节点和指针的方式将元素串联起来,每个节点包含数据和指向下一个节点的指针。
数组的优点是访问速度快,可以通过索引直接定位元素,适合随机访问。
缺点是插入和删除操作比较耗时,需要移动其他元素。
链表的优点是插入和删除操作简单高效,只需要修改指针即可,不需要移动其他元素。
缺点是访问速度较慢,需要遍历链表才能找到指定位置的元素。
3. 请解释什么是栈和队列,并分别列举它们的应用场景。
栈和队列都是常见的线性数据结构,它们在数据的插入和删除操作上有所不同。
栈是一种后进先出(LIFO)的数据结构,只允许在栈顶进行插入和删除操作。
队列是一种先进先出(FIFO)的数据结构,允许在队尾进行插入操作,在队头进行删除操作。
栈的应用场景有很多,比如函数调用栈、表达式求值、括号匹配等。
函数调用栈用于保存函数的局部变量和返回地址,保证函数的正确执行顺序。
表达式求值中,栈可以用于保存运算符和中间结果,实现正确的计算顺序。
数据结构与算法设计与分析考核试卷
![数据结构与算法设计与分析考核试卷](https://img.taocdn.com/s3/m/86cdf6b4f9c75fbfc77da26925c52cc58ad6907d.png)
8.在冒泡排序中,每一趟排序都能确定一个元素的最终位置。()
答案:______
9. Prim算法和Kruskal算法都可以用来求解最小生成树问题,但Prim算法总是从某一顶点开始,而Kruskal算法总是从某一权值最小的边开始。()
答案:______
10.在一个递归算法中,如果递归调用不是算法的最后一个操作,那么这种递归称为尾递归。()
B.邻接表适合表示稀疏图
C.邻接多重表适合表示无向图
D.邻接表和邻接多重表适合表示有向图
14.以下哪些算法属于分治算法?()
A.快速排序
B.归并排序
C.二分查找
D.动态规划
15.以下哪些情况下,动态规划比贪心算法更适合解决问题?()
A.存在重叠子问题
B.问题具有最优子结构
C.需要考虑所有可能的选择
D.问题可以通过局部最优达到全局最优
C.插入一个节点
D.查找某个节点
5.以下哪些算法可以用于解决最小生成树问题?()
A. Kruskal算法
B. Prim算法
C. Dijkstra算法
D. Bellman-Ford算法
6.以下哪些数据结构可以用来实现堆?()
A.数组
B.链表
C.栈
D.队列
7.关于图的深度优先遍历和广度优先遍历,以下哪些说法是正确的?()
________________________________
2.动态规划算法通常用于解决最优化问题,请阐述动态规划算法的三个基本要素,并给出一个动态规划问题的实例。
________________________________
________________________________
四川大学软件学院数据结构与算法分析期末试题(2006 级B)
![四川大学软件学院数据结构与算法分析期末试题(2006 级B)](https://img.taocdn.com/s3/m/71ddc2bc960590c69ec376f4.png)
四川大学期末考试试题(2007-2008学年第1学期)课程号:课程名称:数据结构与算法分析(A卷)任课教师:适用专业年级:06级软件工程学号:姓名:(1)An algorithm must be or do all of the following EXCEPT:a) correctb) composed of concrete stepsc) ambiguousd) composed of a finite number of steps(2)For set P, the notation |P| indicatesa) The number of elements in P. b) The inverse of P.c) The powerset of P. d) None of the above.(3)Pick the quadratic growth rate.a) 5n b) 20 log nc) 2n^2 d) 2^n(4)For set P, the notation |P| indicatesa) The number of elements in P.b) The inverse of P.c) The powerset of P.d) None of the above.(5)Huffman coding provides the optimal coding when:a) The messages are in English.b) The messages are binary numbers.c) The frequency of occurrence for a letter is independent of its context within the message.d) Never.(6)A sorting algorithm is stable if it:a) Works for all inputs.b) Does not change the relative ordering of records with identical key values.c) Always sorts in the same amount of time (within a constant factor) for a given input size. (7)Here is a series of C++ statements using the list ADT in the book.L1.append(10);L1.append(20);L1.append(15);If these statements are applied to an empty list, the result will looklike:a) < 10 20 15 >b) < | 10 20 15 >c) < 10 20 15 | >d) < 15 20 10 >e) < | 15 20 10 >f) < 15 20 10 | >(8)An entry-sequenced file stores records sorted by:a) Primary key value. b) Secondary key value.c) Order of arrival. d) Frequency of access.(9)Breadth-first search is best implemented using:a) A stack or recursion. b) A queue.c) A tree.(10)A recurrence relation is often used to model programs witha) for loops. b) branch control like "if" statements.c) recursive calls. d) None of the above.2.(10 scores)Assume a list has the following configuration:<| 6, 28, 16, 8, 9>Write a series of C++ statements using the List ADT as follows to delete the element with value 16.// List abstract classtemplate <class Elem> class List {public:// Reinitialize the list. The client is responsible for// reclaiming the storage used by the list elements. virtual void clear() = 0;// Insert an element at the front of the right partition.// Return true if successful, false if the list is full. virtual bool insert(const Elem&) = 0;// Append an element at the end of the right partition.// Return true if successful, false if the list is full. virtual bool append(const Elem&) = 0;// Remove the first element of right partition. Return// true if successful, false if right partition is empty.// The element removed is returned in the parameter. virtual bool remove(Elem&) = 0;// Place fence at list start, making left partition empty virtual void setStart() = 0;// Place fence at list end, making right partition empty virtual void setEnd() = 0;// Move fence one step left; no change if already at start virtual void prev() = 0;// Move fence one step right; no change if already at end virtual void next() = 0;// Return length of left partitionvirtual int leftLength() const = 0;// Return length of right partitionvirtual int rightLength() const = 0;// If pos or more elements are in the list, set the size// of left partition to pos and return true. Otherwise,// do nothing and return false.virtual bool setPos(int pos) = 0;// Return in first parameter the first element of the// right partition. Return true if successful, false// if the right partition is empty.virtual bool getV alue(Elem&) const = 0;// Print the contents of the listvirtual void print() const = 0;};3.(10 scores)Build the Huffman coding tree and determine the codes for the following set of letters and weights:a e i o u.1 3 5 7 84.(15 scores)Show the max-heap that results from running buildHeap on the following values stored in an array:10 5 12 3 2 1 8 7 9 45.(15 scores)When implementation Insertion Sort, a binary search could be used to locate the position within the first i – 1 elememts of the array into which element i should be inserted. How would this affect the number of comparisons required? How would using such a binary search affect the asymptotic running time for Insertion Sort?6.(15 scores)// Binary tree node abstract classtemplate <class Elem> class BinNode {public:// Return the node's elementvirtual Elem& val() = 0;// Set the node's elementvirtual void setV al(const Elem&) = 0;// Return the node's left childvirtual BinNode* left() const = 0;// Set the node's left childvirtual void setLeft(BinNode*) = 0;// Return the node's right childvirtual BinNode* right() const = 0;// Set the node's right childvirtual void setRight(BinNode*) = 0;// Return true iff the node is a leafvirtual bool isLeaf() = 0;};Write a recursive function that returns the height of a binary true..7.(15 scores)List the order in which the edges of the following graph are visited when running Prim’s MST algorithm starting3at V ertex 3. Show the final MST.。
数据结构期末试卷及参考答案B
![数据结构期末试卷及参考答案B](https://img.taocdn.com/s3/m/8cf120537f1922791788e870.png)
《数据结构》试卷(B)学号:姓名:日期:一.选择题(每小题2分,共30分,请写在答卷纸上):1.下面程序的时间复杂为()。
for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}A.O(n)B.O(n2)C.O(n3)D.O(n4)2.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是()。
A.线性结构B.树型结构C.物理结构D.图状结构3.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。
A.q=p->next;p->data=q->data;p->next=q->next;free(q);B.q=p->next;q->data=p->data;p->next=q->next;free(q);C.q=p->next;p->next=q->next;free(q);D.q=p->next;p->data=q->data;free(q);4.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点5.设某棵二叉树的中序遍历序列为ABCD,先序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
A.BADCB.BCDAC.CDABD.CBDA6.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
数据结构期末考试题及答案
![数据结构期末考试题及答案](https://img.taocdn.com/s3/m/3e3f286bf02d2af90242a8956bec0975f565a476.png)
数据结构期末考试题及答案一、单项选择题(每题2分,共20分)1. 在数据结构中,算法的时间复杂度是指()。
A. 算法程序的长度B. 算法执行时所需要的基本运算次数C. 算法程序中的语句数D. 算法程序中的指令数答案:B2. 线性表的顺序存储结构和链式存储结构相比,其主要优点是()。
A. 插入和删除操作快B. 存储密度高C. 存储空间可以动态申请D. 存储空间可以预先分配答案:D3. 在一个长度为n的顺序表中,采用二分查找法查找第k小的元素,最坏情况下需要比较的次数是()。
A. nB. n/2C. log2(n+1)D. log2n答案:D4. 一个栈的入栈序列为1, 2, 3, 4, 5,下列序列中哪一个不可能是栈的输出序列()。
A. 5, 4, 3, 2, 1B. 3, 2, 4, 1, 5C. 5, 4, 2, 3, 1D. 1, 2, 5, 3, 4答案:D5. 在二叉树的前序遍历、中序遍历和后序遍历中,根节点总是()。
A. 第一个被访问B. 第二个被访问C. 第三个被访问D. 最后一个被访问答案:A6. 在一个有n个顶点的无向图中,其边的最大数量是()。
A. n(n-1)/2B. n(n+1)/2C. n^2D. 2n答案:A7. 哈夫曼编码是一种()。
A. 静态编码B. 动态编码C. 无损编码D. 有损编码答案:C8. 一个图的邻接矩阵表示法中,若顶点i到顶点j有一条边,则矩阵的第i行第j列的元素为()。
A. 1B. 0C. 边的权重D. 顶点j的度数答案:C9. 在数据库中,关系模式R(U, F),其中U={A, B, C, D},F={(A, B)→C, C→D},下列哪个关系模式是R的候选键()。
A. {A, B}B. {A, C}C. {B, C}D. {C, D}答案:A10. 快速排序算法的平均时间复杂度是()。
A. O(n^2)B. O(nlogn)C. O(n^3)D. O(n)答案:B二、填空题(每题2分,共20分)1. 在数据结构中,递归算法的时间复杂度通常可以用______来描述。
数据结构期末试卷及参考答案B
![数据结构期末试卷及参考答案B](https://img.taocdn.com/s3/m/8cf120537f1922791788e870.png)
《数据结构》试卷(B)学号:姓名:日期:一.选择题(每小题2分,共30分,请写在答卷纸上):1.下面程序的时间复杂为()。
for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}A.O(n)B.O(n2)C.O(n3)D.O(n4)2.设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},则数据结构A是()。
A.线性结构B.树型结构C.物理结构D.图状结构3.设指针变量p指向单链表中结点A,若删除单链表中结点A,则需要修改指针的操作序列为()。
A.q=p->next;p->data=q->data;p->next=q->next;free(q);B.q=p->next;q->data=p->data;p->next=q->next;free(q);C.q=p->next;p->next=q->next;free(q);D.q=p->next;p->data=q->data;free(q);4.栈和队列的共同特点是( )。
A.只允许在端点处插入和删除元素B.都是先进后出C.都是先进先出D.没有共同点5.设某棵二叉树的中序遍历序列为ABCD,先序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
A.BADCB.BCDAC.CDABD.CBDA6.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。
数据结构与算法分析—期末复习题及答案
![数据结构与算法分析—期末复习题及答案](https://img.taocdn.com/s3/m/52aa52b98662caaedd3383c4bb4cf7ec4afeb633.png)
数据结构与算法分析—期末复习题及答案1. 简答题a) 什么是数据结构?数据结构是一种组织和存储数据的方法,它涉及到将数据元素以及它们之间的关系组织成一种特定的方式,以便于有效地访问和操作。
b) 数据结构的分类有哪些?数据结构可以分为线性结构和非线性结构。
线性结构包括数组、链表、栈和队列等;非线性结构包括树和图等。
c) 什么是算法?算法指的是完成特定任务或求解特定问题的一系列步骤或指令。
算法需要满足正确性、可读性、健壮性和高效性等特性。
d) 算法的时间复杂度和空间复杂度是什么?时间复杂度是指在算法执行过程中所需的时间资源,空间复杂度是在算法执行过程中所需的存储空间资源。
2. 选择题a) 在排序算法中,如果待排序序列已经基本有序,以下哪个算法的性能最优?选项:A. 快速排序B. 冒泡排序C. 插入排序D. 归并排序正确答案:C. 插入排序b) 以下哪个数据结构通常用于实现递归算法?选项:A. 数组B. 链表C. 栈D. 队列正确答案:C. 栈3. 填空题a) 计算以下给定二叉树的前序遍历结果:A/ \B C/ \ / \D E F G正确答案:A, B, D, E, C, F, Gb) 给出选择排序算法的伪代码:```for i in range(len(arr)):min_index = ifor j in range(i+1, len(arr)):if arr[j] < arr[min_index]:min_index = jarr[i], arr[min_index] = arr[min_index], arr[i]```4. 案例题假设有一个包含100个元素的整数数组arr,对该数组进行排序后返回结果。
请使用任意一种排序算法,并给出算法的时间复杂度。
解答示例:我们可以使用快速排序算法来对数组进行排序,时间复杂度为O(nlogn)。
下面是该算法的Python代码实现:```def quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)arr = [5, 3, 2, 8, 1, 4, 7, 6, 9]sorted_arr = quick_sort(arr)print(sorted_arr)```运行结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]5. 解答题请描述并给出示例说明动态规划算法的应用场景。
数据结构期末考试试题(含答案)
![数据结构期末考试试题(含答案)](https://img.taocdn.com/s3/m/33cc8fcaf71fb7360b4c2e3f5727a5e9856a271a.png)
数据结构期末考试试题(含答案)数据结构期末考试试题(含答案)第一题:多项式相加(20分)将两个多项式 P(x) 和 Q(x) 相加,结果存储在另一个多项式 S(x) 中,请写出相应的算法,并给出其时间复杂度分析。
答案:算法如下:1. 初始化一个空多项式 S(x)。
2. 分别取多项式 P(x) 和 Q(x) 的第一项,判断指数的大小关系,并将指数较小的项加入 S(x)。
3. 若指数相同,则将两项系数相加,并将结果加入 S(x)。
4. 重复步骤2和步骤3,直到两个多项式中的所有项都被处理完。
5. 返回结果多项式 S(x)。
时间复杂度分析:- 假设 P(x) 和 Q(x) 的项数分别为 m 和 n。
- 在最坏情况下,需要比较 m+n 次指数大小,并进行 m+n-1 次系数相加。
- 因此,该算法的时间复杂度为 O(m+n)。
第二题:循环队列设计(30分)请设计一个循环队列,实现入队、出队等基本操作,并给出时间复杂度分析。
答案:定义循环队列的结构体如下:```ctypedef struct {int *data; // 存储队列元素的数组int front; // 队首指针,指向队首元素的位置int rear; // 队尾指针,指向队尾的下一个位置int maxSize; // 队列的最大容量} CircularQueue;```基本操作的实现如下:1. 初始化循环队列:```cvoid initQueue(CircularQueue *queue, int maxSize) {queue->data = (int *)malloc(sizeof(int) * maxSize);queue->front = queue->rear = 0;queue->maxSize = maxSize;}```2. 入队操作:```cint enqueue(CircularQueue *queue, int value) {if ((queue->rear + 1) % queue->maxSize == queue->front) { return 0; // 队列已满,插入失败}queue->data[queue->rear] = value;queue->rear = (queue->rear + 1) % queue->maxSize;return 1; // 插入成功}```3. 出队操作:```cint dequeue(CircularQueue *queue, int *value) {if (queue->front == queue->rear) {return 0; // 队列为空,出队失败}*value = queue->data[queue->front];queue->front = (queue->front + 1) % queue->maxSize; return 1; // 出队成功}```时间复杂度分析:- 入队和出队操作的时间复杂度均为 O(1)。
2006《数据结构》期末试卷_A_final(key)
![2006《数据结构》期末试卷_A_final(key)](https://img.taocdn.com/s3/m/0ccf79df9ec3d5bbfd0a74e1.png)
一、(本题15分)试设计一个结点数据类型为整型的带表头结点的有序单链表,然后设计一个算法,该算法将这个有序单链表划分成两个单链表,使得第一个单链表中包含原单链表中所有数值为奇数的结点,第二个单链表中包含原单链表中所有数值为偶数的结点,且两个单链表中结点的相对排列顺序与原单链表中相同。
注意:要求使用原单链表的空间,表头结点可以另辟空间。
[解答]void split(LinkList &HL, LinkList &L1, LinkList &L2) {q1=L1= (LinkList) malloc(sizeof(LNode));q2=L2= (LinkList) malloc(sizeof(LNode));p=HL->next;while (p!=NULL) {if (p->date % 2 != 0) {q1->next= p; q1=p;}elseq2->next= p; q2=p;}p=p->next;}q1->next=q2->next=NULL;free(HL);}二、(本题20分)试设计一个递归算法,判断二叉树T是否是满二叉树,假设T是以二叉链表存储。
typedef struct BiTNode{TElemType data;Struct BiTNode *lchild, *rchild;} BiTNode, *BiTree;解答:满二叉树中任一个结点为根的子树都是满二叉树。
算法:(1)如果二叉树T是空树,则是满二叉树;(2)如果二叉树T非空,左右子树都是满二叉树,而且深度一样,则T是满二叉树;(3)如果二叉树T非空,左子树或右子树不是满二叉树,则不是满二叉树;(4)如果二叉树T非空,左右子树都是满二叉树,但深度不一样,则T不是满二叉树。
//该函数判断二叉树T 是否是满二叉树//如果是满二叉树,返回TRUE ,Depth 返回该树的深度; //否则返回FALSE ,Depth 无定义; Boolean Check( BiTree T, int &Depth) { int ldepth, rdepth;if( T==NULL) { Depth=0; return TRUE; }if( Check(T->lchild, ldepth)==FALSE ) return FALSE; if( Check(T->rchild,rdepth)==FALSE) return FALSE; if( ldepth!=rdepth ) return FALSE; Depth=ldepth+1; return TRUE; }三、(本题15分)给定下面的带权无向图G :1) 从顶点0出发,请写出深度优先遍历序列和广度优先遍历序列,当有多种选择时,编号小的结点优先。
《数据结构与算法》期末考试试题及答案
![《数据结构与算法》期末考试试题及答案](https://img.taocdn.com/s3/m/324a956a1fd9ad51f01dc281e53a580216fc50d9.png)
《数据结构与算法》期末考试试题及答案一、选择题A、94,32,40,90,80,46,21,691.在逻辑上可以把数据结构分A.P->NE某T=Q->NE某T;FREE(Q);B、32,40,21,46,69,94,90,80成(A)B.Q->NE某T=P;FREE(Q);C21,32,46,40,80,69,90,94A.线性结构和非线性结构D、90,69,80,46,21,32,94,40B.动态结构和静态结构C.Q->NE 某T=P->NE某T;FREE(Q);21.若用冒泡排序对关键字序C.紧凑结构和非紧凑结构D.P->NE某T=S;S->NE某T=P;列(18,16,14,12,10,8)进行从D.内部结构和外部结构2.单链表中各结点之间的地址(C)A.必须连续B.部分必须连续C.不一定连续D.以上均不对3.在一个长度为n的顺序表中向第i个元素(0<i<=n+1)之前插入一个新元素时,需向后移动(B)个元素。
A、n-iB、n-i+1C、n-i-1D、i4.插入和删除操作只能在一端进行的线性表,称为(C)。
A.队列B.线性表C.栈D.循环队列5、队列是仅允许在()进行插入,而在()进行删除。
(A)A.队尾,队首B.队尾,队尾C.队首,队尾D.队首,队首6.链表适合于(A)查找。
A.顺序B.二分C.随机D.顺序或二分7.数据的基本单位是(A)。
A.数据元素B.数据结构C.数据项D.数据对象8.下列哪个不是算法的特性(B)。
A.有穷性B.可数性C.可行性D.确定性9.在表长为n的顺序表中进行线性查找,它的平均查找长度为(B)。
A.ASL=nB.ASL=(n+1)/2C.ASL=n+1D.ASL=log2n10.一个线性表第一个元素的存储地址是320,每个元素的长度为3,则第五个元素的地址是(C)。
A.311B.328C.332D.31311.设front、rear分别为循环双向链表结点的左指针和右指针,则指针P所指的元素是双循环链表L的尾元素的条件是(D)。
数据结构与算法分析—期末复习题及答案
![数据结构与算法分析—期末复习题及答案](https://img.taocdn.com/s3/m/a9f680452b160b4e767fcfb4.png)
单选题(每题 2 分,共20分)1.对一个算法的评价,不包括如下(B )方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度2.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行( A )。
A. p->next=HL->next; HL->next=p;B. p->next=HL; HL=p;C. p->next=HL; p=HL;D. HL=p; p->next=HL;3.对线性表,在下列哪种情况下应当采用链表表示?( B )A.经常需要随机地存取元素B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变4.一个栈的输入序列为 1 2 3,则下列序列中不可能是栈的输出序列的是( C )A. 2 3 1B. 3 2 1C. 3 1 2D. 1 2 36.若需要利用形参直接访问实参时,应将形参变量说明为(D )参数。
A.值B.函数C.指针D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的( A )。
A.行号B.列号C.元素值D.非零元素个数10.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C )。
A. O(n)B. O(1)C. O(log2n)D. O(n2)二、运算题(每题 6 分,共24分)1.数据结构是指数据及其相互之间的_联系。
当结点之间存在M对N(M:N)的联系时,称这种结构为__图__。
2.队列的插入操作是在队列的___尾_进行,删除操作是在队列的_首_进行。
3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。
4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为___O(1)__,在表尾插入元素的时间复杂度为___ O(n)___。
06级数据结构期末考试题
![06级数据结构期末考试题](https://img.taocdn.com/s3/m/e2544c12a21614791711286f.png)
2006级(嵌入式软件与系统、计算机应用方向)《数据结构》期终考试试卷学号姓名一、单项选择题(每题1分,共15分)1.在计算机科学中,算法指的是( )A. 计算机程序B. 描述问题的方法C. 解决问题的有限步骤序列D. 排序算法2.在数据结构中,可用存储顺序代表逻辑顺序的数据结构为( )A. 顺序结构B. 二叉排序树C. 链式结构D. Hash表3.在数据结构中,按逻辑结构可把数据结构分为( )A. 静态结构和动态结构B. 线性结构和非线性结构C. 顺序结构和链式结构D. 内部结构和外部结构4.对链式存储的正确描述是( )A. 结点之间是连续存储的B. 结点内单元是连续存储的C. 各结点类型可以不一致D. 各结点的地址由小到大5.在下列关于“串”的陈述中,正确的说明是( )A. 串中元素只能是字母B. 串的长度必须大于零C. 串是一种特殊的线性表D. 空串就是空白串6.设A[n][n]为一个对称矩阵,数组下标从[0][0]开始。
为了节省存储,将其下三角部分按行存放在一维数组B[0..m-1],m=n(n+1)/2,对下三角部分中任一元素a ij(i≥j),它在一维数组B 的下标k值是( )A. i(i-1)/2+j-1B. i(i-1)/2+jC. i(i+1)/2+j-1D. i(i+1)/2+j7.对一个满二叉树中,若把它存储到一维数组中(数组下标从0开始),则元素下标为k的右儿子下标是( ) (不考虑数组下标越界的问题)A. ⎣k/2⎦B. ⎡k/2⎤C. 2k+1D. 2k+28.已知一棵二叉树的后序和中序序列分别是dabec和debac,则先序序列是( )A. acbedB. decabC. cedbaD. deabc9.对一个含n个顶点和e条边的无向图(无环),其邻接矩阵中零元素的个数为( )A. eB. 2eC. n2 - eD. n2 - 2e10.假设一个有n个顶点和e条弧的有向图用邻接矩阵表示,则删除与某个顶点v i相关的所有弧的时间复杂度是( )A. O(n)B. O(e)C. O(n+e)D. O(n×e)11.下面关于栈特征的错误描述是( )A. FILOB. FIFOC. 数据可用数组或链表存储D. 弹出数据时,要先检验栈空12.下面关于队列特征的正确描述是( )A. FILOB. FIFOC. 只能用数组来实现队列D. 循环队列不受存储空间限制13.下列排序算法中,时间复杂度最差的是( )A. 选择排序B. 桶(基数)排序C. 快速排序D. 堆排序14. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为 ( )A. 顺序存储结构B. 链式存储结构C. 散列存储结构D. 索引存储结构 15. 在一个顺序存储的有序序列中查找指定的关键字,其时间复杂度的下界是 ( )A. O (log n )B. O (n log n )C. O (n )D. O (1) 二、已知一个无向图的顶点集为{ a , b , c , d , e , f },其邻接矩阵如下所示(0-无边,1-有边)。
数据结构期末考试试题和标准答案及评分标准
![数据结构期末考试试题和标准答案及评分标准](https://img.taocdn.com/s3/m/ee7b13e771fe910ef12df87c.png)
《数据结构》试题(A卷)(考试时间:90分钟)一、单项选择题(本大题共15小题,每小题2分,共30分)(每题只有一个选项是正确的,将答案填写在括号内,错选、多选不得分)1.()是组成数据的基本单位,是一个数据整体中相对独立的单元。
A.数据 B.数据元素 C.数据对象 D.数据结构2.算法计算量的大小称为算法的()。
据的存3.4.5.6.7.8.A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链式存储,不必占用一片连续的存储单元。
D.线性表采用链式存储,便于插入和删除操作。
9.队列操作的原则是()。
A.后进先出B.先进先出C.只能进行插入D.只能进行删除10.栈中允许进行插入和删除的一端称为()。
A.栈首B.栈尾C.栈顶D.栈底11.假设以数组A[n]存放循环队列的元素,其首尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+n)%nB.rear-front+1C.(front-rear+n)%nD.(rear-front)%n12.最大容量为n的循环队列,队尾指针是rear,队首指针是front,则队空的判断条件是()。
13.构。
14.15.12在q3.放了2个字符。
4.广义表(a,b,c,d)的表尾是。
5.一棵深度为k的二叉树,最多有个结点。
6.已知有向图G=(V,E),其中:V={v1,v2,v3,v4,v5,v6,v7},E={<v1,v2>,<v1,v3>,<v1,v4>,<v2,v5>,<v3,v5>,<v3,v6>,<v4,v6>,<v5,v7>,<v6,v7>},则G的拓扑序列是______。
7.有n个顶点的连通图至少有条边。
8.1.()23.4()5.6.7.8.9.()10.采用线性探测法解决冲突问题,所产生的一系列后继散列地址必须大于等于原散列址。
《 数据结构B卷 》期末考试试卷附答案
![《 数据结构B卷 》期末考试试卷附答案](https://img.taocdn.com/s3/m/f5277b3d9a6648d7c1c708a1284ac850ac020401.png)
《数据结构B卷》期末考试试卷附答案一、名词解释(每题2分,共10分)1. 数据类型2. 线性表3. 队列4. 串5. 图二、判断正误(正确打√,错误划×,每题1分,共10分)1.算法必须有输入参数。
( )2.链表能够动态分配结点空间。
( )3.栈是一种先进先出的线性表。
( )4.二维数组能够实现随机存取。
( )5.在二叉树的第i层上至多有2i-1个结点(i≥1)。
( )6.在有向图中,<v1,v2>与<v2,v1>是两条不同的边。
( )7.邻接表只能用于有向图的存储。
()8.有向图不能进行广度优先遍历( )9.平均查找长度ASL可作为衡量一个查找算法效率高低的标准。
( )10.所有的内部排序算法都是稳定的。
( )三、填空(每空2分,共10分)1.线性表、栈和队列都是( )结构。
2.栈是一种特殊的线性表,允许插入和删除运算的一端称为()。
3.队列的出队操作总是在( )进行。
4.按存储结构不同,串可分为( )。
5.深度为k 的完全二叉树至少有( )个结点。
四、选择题(单选或多选)(每题2分,共30分)1.算法原则上都是能够由机器或人完成的。
整个算法好像是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作。
这是算法的( )。
A. 正确性B. 有穷性C. 确定性D. 可行性2.设一棵二叉树中,度为2的结点数为9,则该二叉树的叶结点的数目为( )。
A.10 B. 11 C. 12 D. 不确定3.某二叉树结点的先根序列为E、A、C、B、D、G、F,对中根遍历的序列为A、B、C、D、E、F、G。
该二叉树结点的后根遍历的序列为( )A. [B 、D 、C 、A 、F 、G 、E]B. [B 、D 、C 、F 、A 、G 、E]C. [E 、G 、F 、A 、C 、D 、B]D. [E 、G 、A 、C 、D 、F 、B]4.关于队列的说法正确的是()A. 先进先出B. 属于非线性结构C. 只能采用顺序存储D.属于散列结构5.用单链表表示的链式队列的队尾是在链表的( )位置A. 表尾B. 表头C. 表中D. 任意6.树的非叶子结点是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四川大学期末考试试题(2007-2008学年第1学期)课程号:课程名称:数据结构与算法分析(B卷)任课教师:适用专业年级:06级软件工程学号:姓名:(1)The primary purpose of most computer programs isa) to perform a mathematical calculation.b) to store and retrieve information.c) to sort a collection of records.d) all of the above.(2)Assume that P contains n elements. The number of sets in the powerset of P isa) n b) n^2c) 2^n d) 2^n - 1e) 2^n + 1(3)Pick the growth rate that corresponds to the most efficientalgorithm as n gets large:a) 5n b) 20 log nc) 2n^2 d) 2^n(4)A sequence has the following properties:a) May have duplicates, element have a position.b) May have duplicates, elements do not have a position.c) May not have duplicates, elements have a position.d) May not have duplicates, elements do not have a position.(5)The correct traversal to use on a BST to visit the nodes in sorted order is:a) Preorder traversal. b) Inorder traversal.c) Postorder traversal.(6)When sorting n records, Insertion sort has best-case cost:a) O(log n). b) O(n).c) O(n log n). d) O(n^2)e) O(n!) f) None of the above.(7)For a list of length n, the linked-list implementation's prevfunction requires worst-case time:a) O(1).b) O(log n).c) O(n).d) O(n^2).(8)The easiest way to represent a general tree is to:a) convert to a list. b) convert to a binary tree.c) convert to a graph.(9)Depth-first search is best implemented using:a) A stack or recursion. b) A queue.c) A tree.(10)For set P, the notation |P| indicatesa) The number of elements in P. b) The inverse of P.c) The powerset of P. d) None of the above.2.(10 scores)Write a series of C++ statements that uses the List ADT as follows to create a list capable of holding twenty elements and which actually stores the list with following configuration:<6, 28 | 18, 8, 19>// List abstract classtemplate <class Elem> class List {public:// Reinitialize the list. The client is responsible for// reclaiming the storage used by the list elements. virtual void clear() = 0;// Insert an element at the front of the right partition.// Return true if successful, false if the list is full. virtual bool insert(const Elem&) = 0;// Append an element at the end of the right partition.// Return true if successful, false if the list is full. virtual bool append(const Elem&) = 0;// Remove the first element of right partition. Return// true if successful, false if right partition is empty.// The element removed is returned in the parameter. virtual bool remove(Elem&) = 0;// Place fence at list start, making left partition empty virtual void setStart() = 0;// Place fence at list end, making right partition empty virtual void setEnd() = 0;// Move fence one step left; no change if already at start virtual void prev() = 0;// Move fence one step right; no change if already at end virtual void next() = 0;// Return length of left partitionvirtual int leftLength() const = 0;// Return length of right partitionvirtual int rightLength() const = 0;// If pos or more elements are in the list, set the size// of left partition to pos and return true. Otherwise,// do nothing and return false.virtual bool setPos(int pos) = 0;// Return in first parameter the first element of the// right partition. Return true if successful, false// if the right partition is empty.virtual bool getV alue(Elem&) const = 0;// Print the contents of the listvirtual void print() const = 0;};3.(10 scores)Build the Huffman coding tree and determine the codes for the following set of letters and weights:a b c d e.1 3 5 7 114.(15 scores)What are the minimum and maximum number of elememts in a heap of height h ?5.(15 scores)The Bubble Sort implentation has the following inner for loop:for (int j = n – 1; j > i; j--)Consider the effect of replacing this with the following staement:for (int j = n – 1; j > 0; j--)W ould the new implementation work correctly? W ould the change affect the asymptotic complexity of the algorithm? How would the change affect the running time of the algorithm?6.(15 scores)// Binary tree node abstract classtemplate <class Elem> class BinNode {public:// Return the node's elementvirtual Elem& val() = 0;// Set the node's elementvirtual void setV al(const Elem&) = 0;// Return the node's left childvirtual BinNode* left() const = 0;// Set the node's left childvirtual void setLeft(BinNode*) = 0;// Return the node's right childvirtual BinNode* right() const = 0;// Set the node's right childvirtual void setRight(BinNode*) = 0;// Return true iff the node is a leafvirtual bool isLeaf() = 0;};Write a recursive function that returns a count of the number of leaf nodes in a binary true..7.(15 scores)List the order in which the edges of the following graph are visited when running Kruskal’s MST algorithm. Show the final MST.。