四川大学软件学院数据结构与算法分析期末试题(2006 级B)
- 格式:doc
- 大小:240.50 KB
- 文档页数:5
数据结构期末考试题及答案一、单项选择题(每题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. 栈的特点是___________,___________。
2012-2013山大软件数据结构期末试题(真题)回顾
一、简答题。
1.插入排序、选择排序、冒泡排序、基数排序、堆排序的算法中其比较次数与初始数据集顺序无关的是?请说明理由。
2.已知待散列的线性表为(1,8,16,27,25,28等数据),散列用的一维地址空间为11,假定选用的散列函数是H(K)= K mod 11,将其存入线性开型寻址散列和链表结构。
3.给一个树的层序遍历,中序遍历,写出其后序遍历。
4.给出二叉搜索树的层序遍历,问这个二叉搜索树是否是完全二叉树。
5.请说明广度优先搜索和深度优先搜索算法中所使用的堆栈、队列的作用。
二、应用题。
1.有学号1-36名学生,如果i , j两个学生住在同一个宿舍用(i,j)表示,集合S={(1,2),(4,19)......}如何求集合S中包含多少宿舍。
2.构建霍夫曼树,求ABCDEF的霍夫曼代码
3.有20门课程,如果i , j两门课的学习顺序为先学i ,再学j那么用(i , j)表示,集合S={(2,3),(4,6)....},求至少要安排多少学期.
4.给出ABCDE消耗邻接矩阵,求A到个点的最短路径
三、算法程序题。
1.一个递增的链表,编写一个算法去除链表中的重复元素。
例如,将
(7,12,12,14,23)变为(7,12,14,23),请写出算法思想和算法实现并分析算法的复杂性。
2.编写一个算法如何判断一个用二叉树链表存储的二叉树是否是最大堆,写出算法思想
和算法实现。
数据结构与算法期末考试题及答案一、选择题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,则此活动可以合理推迟,不为关键活动。
《数据结构》期末考试试卷试题及答案一、选择题(每题5分,共20分)1. 下列哪个不是线性结构?A. 栈B. 队列C. 图D. 数组2. 下列哪个不是栈的基本操作?A. 入栈B. 出栈C. 查找D. 判断栈空3. 下列哪个不是队列的基本操作?A. 入队B. 出队C. 查找D. 判断队列空4. 下列哪个不是图的基本概念?A. 顶点B. 边C. 路径D. 环二、填空题(每题5分,共20分)5. 栈是一种______结构的线性表,队列是一种______结构的线性表。
6. 图的顶点集记为V(G),边集记为E(G),则无向图G=(V(G),E(G)),有向图G=(______,______)。
7. 树的根结点的度为______,度为0的结点称为______。
8. 在二叉树中,一个结点的左子结点是指______的结点,右子结点是指______的结点。
三、简答题(每题10分,共30分)9. 简述线性表、栈、队列、图、树、二叉树的基本概念。
10. 简述二叉树的遍历方法。
11. 简述图的存储结构及其特点。
四、算法题(每题15分,共30分)12. 编写一个算法,实现栈的入栈操作。
13. 编写一个算法,实现队列的出队操作。
五、综合题(每题20分,共40分)14. 已知一个无向图G=(V,E),其中V={1,2,3,4,5},E={<1,2>,<1,3>,<2,4>,<3,4>,<4,5>},画出图G,并给出图G的邻接矩阵。
15. 已知一个二叉树,其前序遍历序列为ABDCE,中序遍历序列为DBACE,请画出该二叉树,并给出其后序遍历序列。
答案部分一、选择题答案1. C2. C3. C4. D二、填空题答案5. 后进先出先进先出6. V(G),E(G)7. 0 叶结点8. 左孩子右孩子三、简答题答案9. (1)线性表:一个线性结构,其特点是数据元素之间存在一对一的线性关系。
数据结构与算法分析习题及参考答案四川⼤学《数据结构与算法分析》课程习题及参考答案模拟试卷⼀⼀、单选题(每题2 分,共20分)1.以下数据结构中哪⼀个是线性结构?( )A. 有向图B. 队列C. 线索⼆叉树D. B树2.在⼀个单链表HL中,若要在当前由指针p指向的结点后⾯插⼊⼀个由q指向的结点,则执⾏如下( )语句序列。
A. p=q; p->next=q;B. p->next=q; q->next=p;C. p->next=q->next; p=q;D. q->next=p->next; p->next=q;3.以下哪⼀个不是队列的基本运算?()A. 在队列第i个元素之后插⼊⼀个元素B. 从队头删除⼀个元素C. 判断⼀个队列是否为空D.读取队头元素的值4.字符A、B、C依次进⼊⼀个栈,按出栈的先后顺序组成不同的字符串,⾄多可以组成( )个不同的字符串?A.14B.5C.6D.85.由权值分别为3,8,6,2的叶⼦⽣成⼀棵哈夫曼树,它的带权路径长度为( )。
A. 11 B.35 C. 19 D. 53以下6-8题基于图1。
6.该⼆叉树结点的前序遍历的序列为( )。
A.E、G、F、A、C、D、BB.E、A、G、C、F、B、DC.E、A、C、B、D、G、FD.E、G、A、C、D、F、B7.该⼆叉树结点的中序遍历的序列为( )。
A. A、B、C、D、E、G、FB. E、A、G、C、F、B、DC. E、A、C、B、D、G、FE.B、D、C、A、F、G、E8.该⼆叉树的按层遍历的序列为( )。
EA GCB DF图1A.E、G、F、A、C、D、B B. E、A、C、B、D、G、FC. E、A、G、C、F、B、DD. E、G、A、C、D、F、B9.下⾯关于图的存储的叙述中正确的是( )。
A.⽤邻接表法存储图,占⽤的存储空间⼤⼩只与图中边数有关,⽽与结点个数⽆关B.⽤邻接表法存储图,占⽤的存储空间⼤⼩与图中边数和结点个数都有关C. ⽤邻接矩阵法存储图,占⽤的存储空间⼤⼩与图中结点个数和边数都有关D.⽤邻接矩阵法存储图,占⽤的存储空间⼤⼩只与图中边数有关,⽽与结点个数⽆关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下⾯哪⼀个序列是从上述序列出发建堆的结果?( )A. a,g,h,m,n,p,q,x,zB. a,g,m,h,q,n,p,x,zC. g,m,q,a,n,p,x,h,zD. h,g,m,p,a,n,q,x,z⼆、填空题(每空1分,共26分)1.数据的物理结构被分为_________、________、__________和___________四种。
《数据结构》试题(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.采用线性探测法解决冲突问题,所产生的一系列后继散列地址必须大于等于原散列址。
四川大学“精品课程”计算机科学与技术专业(本科)《数据结构与算法分析》课程考试说明与模拟试卷第一部分考试说明数据结构与算法分析》是计算机科学与技术专业统设的一门重要的必修专业基础课,它主要研究数据的各种逻辑结构和在计算机中的存储结构,还研究对数据进行的插入、查找、删除、排序、遍历等基本运算或操作以及这些运算在各种存储结构上具体实现的算法。
由于本课程的主教材采用C++语言描述算法,期末卷面考试也采用C++语言描述,因而要求在做平时作业和上机实验操作时用C++开发工具(如:Visual C++或C++ Builder或Borland C++)。
下面按照主教材中各章次序给出每章的具体复习要求,以便同学们更好地进行期末复习。
第一章绪论重点掌握的内容:1. 数据结构的二元组表示,对应的图形表示,序偶和边之间的对应关系。
2. 集合结构、线性结构、树结构和图结构的特点。
3. 抽象数据类型的定义和表示方法。
4. 一维和二维数组中元素的按下标和按地址的访问方式以及相互转换,元素地址和数组地址的计算,元素占用存储空间大小和数组占用存储空间大小的计算。
5. 普通函数重载和操作符函数重载的含义,定义格式和调用格式。
6. 函数定义中值参数和引用参数的说明格式及作用,函数被调用执行时对传送来的实际参数的影响。
7. 算法的时间复杂度和空间复杂度的概念,计算方法,数量级表示。
8. 一个简单算法的最好、最差和平均这三种情况的时间复杂度的计算。
对于本章的其余内容均作一般掌握。
第二章线性表重点掌握的内容:1. 线性表的定义及判别和抽象数据类型的描述,线性表中每一种操作的功能,对应的函数名、返回值类型和参数表中每个参数的作用。
2. 线性表的顺序存储结构的类型定义,即List类型的定义和每个域的定义及作用。
3. 线性表的每一种运算在顺序存储结构上实现的算法,及相应的时间复杂度。
4.链接存储的概念,线性表的单链接和双链接存储的结构,向单链表中一个结点之后插入新结点或从单链表中删除一个结点的后继结点的指针链接过程。
试题一一、单项选择题(每小题2分,共20分)(1)以下数据结构中哪一个是线性结构?()A)有向图B)队列C)线索二叉树D)B树(2)在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。
A)p=q; p->next=q; B)p->next=q;q->next=p;C)p->next=q->next; p=q; D)q->next=p->next;p->next=q;(3)()不是队列的基本运算。
A)在队列第i个元素之后插入一个元素B)从队头删除一个元素C)判断一个队列是否为空D)读取队头元素的值(4)字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串。
A)14 B)5 C)6D)8(5)由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()。
A)11 B)35 C)19 D)53 以下6-8题基于下图:(6)该二叉树结点的前序遍历的序列为()。
A)E、G、F、A、C、D、B B)E、A、G、C、F、B、DC)E、A、C、B、D、G、F D)E、G、A、C、D、F、B(7)该二叉树结点的中序遍历的序列为()。
A)A、B、C、D、E、G、F B)E、A、G、C、F、B、DC)E、A、C、B、D、G、F D)B、D、C、A、F、G、E(8)该二叉树的按层遍历的序列为()。
A)E、G、F、A、C、D、B B)E、A、C、B、D、G、FC)E、A、G、C、F、B、D D)E、G、A、C、D、F、B(9)下面关于图的存储的叙述中正确的是()。
A)用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B)用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C)用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D)用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关(10)设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?()A)a,g,h,m,n,p,q,x,z B)a,g,m,h,q,n,p,x,zC)g,m,q,a,n,p,x,h,z D)h,g,m,p,a,n,q,x,z二、(本题8分)对于序列{8,18,6,16,29,28},试写出堆顶元素最小的初始堆。
《数据结构》期末考试试题及答案一、选择题(每题2分,共20分)1. 下列哪一个不是线性结构的基本特征?A. 有且只有一个根结点B. 每个结点最多有一个前驱和一个后继C. 有且只有一个叶子结点D. 有序对中第一个元素是根结点答案:C2. 在单链表中,存储元素的数据域称为元素的哪个部分?A. 指针域B. 数据域C. 结点域D. 头结点答案:B3. 在顺序存储结构中,数据元素之间的逻辑关系由哪个因素决定?A. 数据元素的存储顺序B. 数据元素的存储位置C. 数据元素的类型D. 数据元素的大小答案:A4. 下列哪种排序算法的时间复杂度不是O(nlogn)?A. 快速排序B. 归并排序C. 堆排序D. 冒泡排序答案:D5. 在二叉树中,具有度为2的结点的个数是n0,度为0的结点个数是n2,则有()。
A. n0 = n2 - 1B. n0 = n2 + 1C. n0 = n2D. n0 = n2 + 2答案:B6. 在线索二叉树中,哪个结点被称为线索结点?A. 有左子树的结点B. 有右子树的结点C. 既没有左子树也没有右子树的结点D. 具有左右子树的结点答案:C7. 在双向链表中,查找结点的时间复杂度是()。
A. O(1)B. O(n)C. O(nlogn)D. O(n^2)答案:B8. 在栈的操作中,下列哪个操作是非法的?A. 先进先出B. 后进先出C. 可以插入任意元素D. 可以删除任意元素答案:D9. 在顺序表中进行插入操作时,平均移动次数为()。
A. 0B. n/2C. nD. n-1答案:C10. 在下列排序算法中,哪个算法是不稳定的?A. 冒泡排序B. 快速排序C. 插入排序D. 归并排序答案:B二、填空题(每题2分,共20分)1. 线性表的顺序存储结构称为顺序表,其基本特点是()。
答案:元素顺序存储2. 在单链表中,每个结点包括两个域:数据域和()。
答案:指针域3. 在二叉树中,度为0的结点称为(),度为2的结点称为()。
四川大学期末考试试题(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.。