数据结构考试必过宝典
- 格式:doc
- 大小:460.00 KB
- 文档页数:19
期末复习:1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①____、数据信息在计算机中的②_____以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①____的有限集合,R是D上的②____有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成______。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①_____,算法分析的两个主要方面是②_____ 。
① A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性② A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①____ ,它必具备输入、输出和②_____等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法② A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性答案:1、C,A2、B,D 3、C 4、C,A5、C,B1. 数据逻辑结构包括__________、_________和__________三种类型,树形结构和图形结构合称为__________。
2. 在线性结构中,第一个结点________前驱结点,其余每个结点有且只有_______个前驱结点;最后一个结点________后续结点,其余每个结点有且只有______个后续结点。
3. 在树形结构中,树根结点没有______结点,其余每个结点有且只有_______个直接前驱结点,叶子结点没有_______结点,其余每个结点的直接后续结点可以______。
数据结构试题及答案一、选择题(每题2分,共20分)1. 在数据结构中,线性结构的特点是元素之间存在一对一的线性关系。
以下哪个数据结构不属于线性结构?A. 栈B. 队列C. 树D. 链表答案:C2. 栈(Stack)是一种后进先出(LIFO)的数据结构,以下哪个操作不是栈的基本操作?A. PushB. PopC. TopD. Sort答案:D3. 在二叉树的遍历中,前序遍历的顺序是:A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表的冲突可以通过多种方法解决,以下哪个不是解决哈希表冲突的方法?A. 链地址法B. 开放地址法C. 再散列法D. 排序法答案:D5. 以下哪个排序算法是稳定的?A. 快速排序B. 堆排序C. 归并排序D. 选择排序答案:C6. 在图的遍历中,深度优先搜索(DFS)使用的是哪种数据结构来实现?A. 队列B. 栈C. 链表D. 哈希表答案:B7. 以下哪个是图的存储方式?A. 顺序存储B. 链式存储C. 散列表D. 矩阵存储答案:D8. 动态数组(如C++中的vector)在插入元素时可能需要进行的操作是:A. 原地扩展B. 复制元素C. 重新分配内存D. 释放内存答案:C9. 以下哪个不是算法的时间复杂度?A. O(1)B. O(log n)C. O(n^2)D. O(n!)答案:D10. 在查找算法中,二分查找法要求被查找的数据必须是:A. 无序的B. 有序的C. 随机分布的D. 唯一元素答案:B二、简答题(每题5分,共30分)1. 简述链表和数组的区别。
答案:链表和数组都是存储数据的线性数据结构,但它们在内存分配、访问方式、插入和删除操作等方面存在差异。
数组在内存中是连续存储的,可以通过索引快速访问任意元素,但插入和删除元素时可能需要移动大量元素。
链表在内存中是非连续存储的,每个元素包含数据和指向下一个元素的指针,不支持通过索引快速访问,但插入和删除操作只需要改变指针,不需要移动其他元素。
考试的目的是为了督促大家学习。
期末考试降至,将期末考试题型以及一些常见题目列举出来,希望大家抓紧时间提前开始复习,取得一个好成绩!考试题型一、简答题(4小题,20分)二、选择题(10小题,10分)三、填空题(10小题,20分)四、构造题(5小题,30分)五、算法设计题(2小题,20分)典型题目注意:以下可做参考,但考试范围覆盖全书,不仅仅包括以下题目。
1、四种基本逻辑结构及其图示。
2、抽象数据类型的定义。
3、算法的定义与特点。
4、顺序存储与链式存储的优缺点。
5、一维数组和顺序表的异同。
6、栈和队列为什么是限定性线性表?它们有什么不同?7、递归进层(退层)做哪三件事情?8、什么是特殊矩阵?压缩原则是什么?9、在图的遍历中,设置访问标志数组的作用是什么?10、求最小生成树有哪些方法?各自适合什么类型的图。
11、折半查找的前提有哪些?12、什么是平衡二叉排序树?平衡因子的取值范围有哪些?13、分块查找的基本思想。
14、分析二叉排序树的查找性能。
(最好、最坏和平均查找性能)15、什么是排序的稳定性?列举至少三个稳定的排序算法和三个不稳定排序算法。
更多可参照“数据结构习题补充.docx”,已上传到QQ群上。
1、在一棵平衡二叉排序树中,每个结点的平衡因子的取值范围是()A.-1~1 B.-2~2 C.1~2 D.0~12、在单链表中,下列说法正确的是()A.单链表中头结点是必不可少的;B.单链表中头指针是必不可少的;C.在单链表中可以实现随机存取;D.单链表的存储密度小于顺序表3、假设以数组A[M]存放循环队列的元素,其头尾指示器分别为front和rear,则当前队列中的元素个数为( )。
A.rear-front+1B. (rear-front+M)%MC. (front - rear +M)%MD. (rear-front+M)%M4、已知广义表L=((a,b,c),(d,e,f)),运用下列()运算可以得到结果:e。
数据结构必考知识点总结在准备考试时,了解数据结构的基本概念和相关算法是非常重要的。
以下是一些数据结构的必考知识点总结:1. 基本概念数据结构的基本概念是非常重要的,包括数据、数据元素、数据项、数据对象、数据类型、抽象数据类型等的概念。
了解这些概念有助于更好地理解数据结构的本质和作用。
2. 线性表线性表是数据结构中最基本的一种,它包括顺序表和链表两种实现方式。
顺序表是将数据元素存放在一块连续的存储空间内,而链表是将数据元素存放在若干个节点中,每个节点包含数据和指向下一个节点的指针。
了解线性表的概念和基本操作是非常重要的。
3. 栈和队列栈和队列是两种特殊的线性表,它们分别具有后进先出和先进先出的特性。
栈和队列的实现方式有多种,包括数组和链表。
掌握栈和队列的基本操作和应用是数据结构的基本内容之一。
4. 树结构树是一种非线性的数据结构,它包括二叉树、多路树、二叉搜索树等多种形式。
了解树的基本定义和遍历算法是必考的知识点。
5. 图结构图是一种非线性的数据结构,它包括有向图和无向图两种形式。
了解图的基本概念和相关算法是非常重要的,包括图的存储方式、遍历算法、最短路径算法等。
6. 排序算法排序是一个非常重要的算法问题,掌握各种排序算法的原理和实现方式是必不可少的。
常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。
7. 查找算法查找是另一个重要的算法问题,包括顺序查找、二分查找、哈希查找、树查找等。
了解各种查找算法的原理和实现方式是必考的知识点之一。
8. 算法复杂度分析算法的时间复杂度和空间复杂度是评价算法性能的重要指标,掌握复杂度分析的方法和技巧是非常重要的。
9. 抽象数据类型ADT是数据结构的一种概念模型,它包括数据的定义和基本操作的描述。
了解ADT的概念和实现方式是非常重要的。
10. 动态存储管理动态存储管理是数据结构中一个重要的问题,包括内存分配、内存释放、内存回收等。
了解动态存储管理的基本原理和实现方式是必考的知识点之一。
数据结构考试题及答案一、选择题1. 以下哪种数据结构在实现栈时最为高效?A. 链表B. 数组C. 树D. 图答案:B2. 快速排序算法的时间复杂度在最坏情况下是多少?A. O(n)B. O(nlogn)C. O(n^2)D. O(n^3)答案:C3. 在二叉搜索树中,若要查找给定值的节点,应该按照以下哪种方式进行?A. 从根节点开始,向左或向右子树交替进行B. 从根节点开始,始终向左子树进行C. 从根节点开始,始终向右子树进行D. 从最底层节点开始向上进行答案:A4. 哈希表的主要优点是什么?A. 有序存储数据B. 高效的查找、插入和删除操作C. 动态扩容D. 消耗内存小答案:B5. 下面哪种数据结构通常用于实现高效的多对一映射?A. 数组B. 链表C. 哈希表D. 树答案:C二、填空题1. 在平衡树中,AVL树通过_________来保持树的平衡。
答案:旋转2. 堆数据结构通常用来实现_________等优先队列。
答案:最大/最小3. 拓扑排序是针对有向无环图(DAG)的一种排序算法,它能够反映出任务间的_________关系。
答案:依赖4. 广度优先搜索(BFS)算法使用_________数据结构来实现。
答案:队列5. 斐波那契数列可以通过递归算法、动态规划以及_________等方法来计算。
答案:矩阵快速幂三、简答题1. 请简述链表和数组的区别及各自的优缺点。
答案:链表由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
它的优点是能够在常数时间内在任意位置插入或删除元素,但随机访问效率较低。
数组是一段连续的内存空间,可以存储一系列相同类型的元素。
它的优点是支持高效的随机访问,但插入和删除操作通常需要移动大量元素,且大小固定或调整大小成本较高。
2. 描述二分查找的工作原理及其适用条件。
答案:二分查找是一种在有序数组中查找特定元素的算法。
它的工作原理是将数组分为两半,比较中间元素与目标值,如果相等则查找结束;如果目标值较小,则在左半部分继续查找;如果目标值较大,则在右半部分继续查找。
数据结构期末重点复习必过1.1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。
◆ 数据:指能够被计算机识别、存储和加工处理的信息载体。
◆ 数据元素:就是数据的基本单位,在某些情况下数据项组成。
◆ 数据类型:是一个值的集合以及在这些值上定义的一组操作的总称。
◆ 数据结构:指的是数据之间的相互关系,即数据的组织形式。
一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。
◆ 逻辑结构:指各数据元素之间的逻辑关系。
◆ 存储结构:就是数据的逻辑结构用计算机语言的实现。
◆ 线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
线性表就是一个典型的线性结构。
◆ 非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。
1.2 试举一个数据结构的例子、叙述其逻辑结构、存储结构、运算三个方面的内容。
◆例如有一张学生成绩表,记录了一个班的学生各门课的成绩。
按学生的姓名为一行记成的表。
这个表就是一个数据结构。
每个记录(有姓名,学号,成绩等字段)就是一个结点,对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继(它的前面和后面均有且只有一个记录)。
这几个关系就确定了这个表的逻辑结构。
那么我们怎样把这个表中的数据存储到计算机里呢? 用高级语言如何表示各结点之间的关系呢?是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针进行链接呢?这就是存储结构的问题,我们都是从高级语言的层次来讨论这个问题的。
(所以各位赶快学C语言吧)。
最后,我们有了这个表(数据结构),肯定要用它,那么就是要对这张表中的记录进行查询,修改,删除等操作,对这个表可以进行哪些操作以及如何实现这些操作就是数据的运算问题了。
数据结构与算法考试(答案见尾页)一、选择题1. 什么是数据结构?请列举几种常见的数据结构。
A. 数组B. 链表C. 栈D. 队列E. 图2. 算法的时间复杂度是如何表示的?请简述其计算方式。
A. 用大O符号表示B. 用大O符号表示C. 用大O符号表示D. 用大O符号表示3. 什么是递归?请举例说明递归在算法中的实现。
A. 一个函数调用自身B. 一个函数调用自身的过程C. 一个函数调用自身的过程D. 一个函数调用自身的过程4. 什么是排序算法?请列举几种常见的排序算法,并简要描述它们的特点。
A. 冒泡排序B. 选择排序C. 插入排序D. 快速排序E. 归并排序5. 什么是哈希表?请简述哈希表的原理和优点。
A. 一种数据结构,它通过将键映射到数组索引来存储和检索数据B. 一种数据结构,它通过将键映射到数组索引来存储和检索数据C. 一种数据结构,它通过将键映射到数组索引来存储和检索数据D. 一种数据结构,它通过将键映射到数组索引来存储和检索数据6. 什么是树形结构?请列举几种常见的树形结构,并简要描述它们的特点。
A. 二叉树B. 二叉树C. B树D. B+树E. 无7. 什么是图数据结构?请列举几种常见的图算法,并简要描述它们的特点。
A. 广度优先搜索B. 深度优先搜索C. 最短路径算法(Dijkstra算法)D. 最长路径算法(Floyd算法)E. 最小生成树算法(Kruskal算法,Prim算法)8. 什么是动态规划?请简述动态规划的基本思想和应用场景。
A. 一种通过分解问题为更小的子问题来求解的方法B. 一种通过分解问题为更小的子问题来求解的方法C. 一种通过分解问题为更小的子问题来求解的方法D. 一种通过分解问题为更小的子问题来求解的方法9. 请简述贪心算法的基本思想以及在哪些问题上可以应用贪心算法。
A. 一种通过局部最优解来达到全局最优解的策略B. 一种通过局部最优解来达到全局最优解的策略C. 一种通过局部最优解来达到全局最优解的策略D. 一种通过局部最优解来达到全局最优解的策略10. 什么是算法的时间复杂度和空间复杂度?请简述它们的含义以及如何计算它们。
数据结构试题库及答案一、选择题1. 在数据结构中,线性结构的特点是:A. 元素之间存在一对一关系B. 元素之间存在一对多关系C. 元素之间存在多对多关系D. 元素之间存在一对一或多对多关系答案:A2. 栈(Stack)是一种特殊的线性表,其特点是:A. 只能在一端进行插入和删除操作B. 可以在两端进行插入和删除操作C. 只能在一端进行插入操作,另一端进行删除操作D. 可以在任意位置进行插入和删除操作答案:A3. 在二叉树中,度为1的节点数目为2,度为0的节点数目也为2,该二叉树的节点总数是:A. 5B. 6C. 7D. 8答案:B二、简答题1. 请简述什么是哈希表,并说明其主要优点。
答案:哈希表是一种通过哈希函数将键映射到表中一个位置来访问记录的数据结构。
其主要优点包括:平均情况下,查找、插入和删除操作的时间复杂度为O(1),即常数时间内完成操作;空间效率高,能够存储大量数据。
2. 描述图的深度优先搜索(DFS)算法的基本思想。
答案:深度优先搜索算法的基本思想是从一个顶点开始,尽可能深地搜索图的分支。
搜索过程中使用一个栈来保存路径上的顶点。
当搜索到一个顶点时,先访问该顶点,然后依次搜索其所有未被访问过的邻接顶点。
如果当前顶点的所有邻接顶点都被访问过,则回溯到上一个顶点,继续搜索其他邻接顶点。
三、应用题1. 给定一个无向图,使用邻接表表示,请编写一个算法找出图中的所有连通分量。
答案:首先,创建一个访问过的顶点集合。
然后,从图中任意一个未被访问的顶点开始,执行深度优先搜索(DFS)。
每次DFS完成后,就找到了一个连通分量。
重复这个过程,直到所有顶点都被访问过,即可找到图中的所有连通分量。
2. 假设有一个数组,需要频繁地进行查找、插入和删除操作,请设计一个适合这种场景的数据结构,并说明其优势。
答案:对于这种场景,可以使用平衡二叉搜索树(如AVL树或红黑树)。
这些数据结构可以保证在最坏情况下,查找、插入和删除操作的时间复杂度为O(log n)。
1. 什么是链表?链表有哪些优点和缺点?答案:链表是一种数据结构,其中每个元素包含数据和指向下一个元素的指针。
链表的优点包括动态分配内存、插入和删除操作方便,缺点是顺序访问需要从头到尾遍历。
2. 什么是二叉树?二叉树有哪些基本操作?答案:二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。
二叉树的基本操作包括插入、删除、搜索和遍历。
3. 简述哈希表的工作原理。
哈希表有哪些优点和缺点?答案:哈希表是一种基于哈希函数的数据结构,它可以将键映射到相应的值。
哈希表的优点包括快速查找、动态扩展和节省空间。
缺点是可能存在哈希冲突,需要处理冲突情况。
4. 解释栈和队列的基本概念。
它们在计算机科学中有哪些应用?答案:栈是一种后进先出(LIFO)的数据结构,它只能从顶部添加和删除元素。
队列是一种先进先出(FIFO)的数据结构,它可以从一端添加元素,并从另一端删除元素。
栈和队列在计算机科学中有许多应用,包括算法优化、操作系统中的内存管理、数据处理等。
5. 解释并实现一个简单的单链表。
答案:单链表是一种线性数据结构,其中每个元素包含数据和指向下一个元素的指针。
可以通过定义节点类来实现单链表,并在类中实现插入、删除、搜索和遍历等基本操作。
以下是一些参考答案:1. 链表是一种线性数据结构,其中每个元素包含数据和指向下一个元素的指针。
链表的优点包括动态分配内存、插入和删除操作方便,缺点是顺序访问需要从头到尾遍历。
2. 二叉树是一种树形数据结构,它由节点和边组成。
二叉树的基本操作包括插入、删除、搜索和遍历,其中遍历包括前序、中序和后序遍历。
二叉树在计算机科学中可以用于实现二叉搜索树、堆、表达式树等。
3. 哈希表是一种基于哈希函数的数据结构,它可以将键映射到相应的值。
哈希表的优点是查找速度快,缺点是可能存在哈希冲突需要处理。
常见的哈希表实现包括Python中的字典数据类型和Java中的HashMap类。
期末复习:1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的①____、数据信息在计算机中的②_____以及一组相关的运算等的课程。
①A.操作对象B.计算方法C.逻辑结构D.数据映象②A.存储结构B.关系C.运算D.算法2. 数据结构DS(Data Struct)可以被形式地定义为DS=(D,R),其中D是①____的有限集合,R是D上的②____有限集合。
①A.算法B.数据元素C.数据操作D.数据对象②A.操作B.映象C.存储D.关系3. 在数据结构中,从逻辑上可以把数据结构分成______。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构4. 算法分析的目的是①_____,算法分析的两个主要方面是②_____ 。
①A. 找出数据结构的合理性 B. 研究算法中的输入和输出的关系C. 分析算法的效率以求改进D. 分析算法的易懂性和文档性②A. 空间复杂性和时间复杂性 B. 正确性和简明性C. 可读性和文档性D. 数据复杂性和程序复杂性5. 计算机算法指的是①____ ,它必具备输入、输出和②_____等五个特性。
① A. 计算方法 B. 排序方法C. 解决问题的有限运算序列D. 调度方法②A. 可行性、可移植性和可扩充性 B. 可行性、确定性和有穷性C. 确定性、有穷性和稳定性D. 易读性、稳定性和安全性答案:1、C,A 2、B,D 3、C 4、C,A 5、C,B1. 数据逻辑结构包括__________、_________和__________三种类型,树形结构和图形结构合称为__________。
2. 在线性结构中,第一个结点________前驱结点,其余每个结点有且只有_______个前驱结点;最后一个结点________后续结点,其余每个结点有且只有______个后续结点。
3. 在树形结构中,树根结点没有______结点,其余每个结点有且只有_______个直接前驱结点,叶子结点没有_______结点,其余每个结点的直接后续结点可以______。
4. 在图形结构中,每个结点的前驱结点数和后续结点数可以________。
5. 线性结构中元素之间存在_______关系,树形结构中元素之间存在______关系,图形结构中元素之间存在________关系。
6. 算法的五个重要特性是_______ , ________ , _________, ________ , ________。
7. 分析下面算法(程序段),给出最大语句频度_______,该算法的时间复杂度是________。
for (i=0;i<n;i++)for (j=0;j<n; j++)A[i][j]=0;8. 分析下面算法(程序段),给出最大语句频度______,该算法的时间复杂度是_______。
for (i=0;i<n;i++)for (j=0; j<i; j++)A[i][j]=0;9. 分析下面算法(程序段),给出最大语句频度______,该算法的时间复杂度是_______。
s=0;for (i=0;i<n;i++)for (j=0;j<n;j++)for (k=0;k<n;k++)s=s+B[i][j][k];sum=s;答案:1、线性结构,图形结构,树形结构,非线性结构2、没有,1,没有,13、前驱,1,后续,任意多个4、任意多个5、一对一,一对多,多对多6、输入,输出,有穷性,确定性,可行性7、n2,O(n2)8、n(n+1)/2,O(n2)9、n3,O(n3)1. 一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是______。
A. 110B. 108C. 100D. 1202. 线性表的顺序存储结构是一种____的存储结构,而链式存储结构是一种____的存储结构。
A.随机存取B.索引存取C.顺序存取D.散列存取3. 线性表的逻辑顺序与存储顺序总是一致的,这种说法______。
A. 正确B. 不正确4. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址______。
A. 必须是连续的B. 部分地址必须是连续的C. 一定是不连续的D. 连续或不连续都可以5. 在以下的叙述中,正确的是______。
线性表的顺序存储结构优于链表存储结构线性表的顺序存储结构适用于频繁插入/删除数据元素的情况线性表的链表存储结构适用于频繁插入/删除数据元素的情况线性表的链表存储结构优于顺序存储结构6. 每种数据结构都具备三个基本运算:插入、删除和查找,这种说法_____。
A. 正确B. 不正确7. 不带头结点的单链表head为空的判定条件是____。
A. head= =NULLB. head->next= =NULLC. head->next= =headD. head!=NULL8. 带头结点的单链表head为空的判定条件是____。
A. head= =NULLB. head->next= =NULLC. head->next= =headD. head!=NULL9. 非空的循环单链表head的尾结点(由p所指向)满足____。
A. p->next= =NULLB. p= =NULLC. p->next= =headD. p= =head10. 在双向循环链表的p所指结点之后插入s所指结点的操作是____。
A. p->right=s; s->left=p; p->right->left=s; s->right=p->right;B. p->right=s; p->right->left=s; s->left=p; s->right=p->right;C. s->left=p; s->right=p->right; p->right=s; p->right->left=s;D. s->left=p; s->right=p->right; p->right->left=s; p->right=s;11. 在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。
A. s->next=p->next; p->next=s;B. p->next=s->next; s->next=p;C. q->next=s; s->next=p;D. p->next=s; s->next=q;12. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。
A. s->next=p; p->next=s;B. s->next=p->next; p->next=s;C. s->next=p->next; p=s;D. p->next=s; s->next=p;13. 在一个单链表中,若删除p所指结点的后续结点,则执行____。
A. p->next= p->next->next;B. p= p->next; p->next= p->next->next;C. p->next= p->next;D. p= p->next->next;14. 从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。
A. nB. n/2C. (n-1)/2D. (n+1)/215. 在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是__。
A. O(1)B. O(n)C. O (n2)D. O (nlog2n)16. 给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。
A. O(1))B. O(n)C. O (n2)D. O (n*log2n)答案:1、B 2、A,C 3、B 4、D 5、C 6、A 7、A 8、B 9、C 10、D 11、C12、B 13、A 14、D 15、B 16、C1. 单链表可以做____的链接存储表示。
2. 在双链表中,每个结点有两个指针域,一个指向_____,另一个指向_____。
3. 在一个单链表中p所指结点之前插入一个s (值为e)所指结点时,可执行如下操作:q=head;while (q->next!=p) q=q->next;s= new Node; s->data=e;q->next= ______; //填空s->next= ______ ; //填空4. 在一个单链表中删除p所指结点的后继结点时,应执行以下操作:q= p->next;p->next= _______; //填空delete ______; //填空5. 在一个单链表中p所指结点之后插入一个s所指结点时,应执行s->next=____和p->next=____的操作。
6. 对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是____。
答案:1、线性结构表2、前驱结点,后继结点3、s,p 4、q->next,q 5、p->next,s6、O(1),O(n)1.设顺序表va中的数据元数递增有序。
试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
例1 设线性表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。
void InsertIncreaseList(SqList *L ,DataType x){int i;for(i=1;i<=L->Length && L->data[i-1]< x;i++) ;/*查找并比较,分号不能少*/for(j = L->Length-1;j>=i-1;j--)L->data[j+1] = L->data[j]; /*移动结点*/L->data[i-1] = x;L->Length++;}例2:有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。
例如A=(a,c,d,e,h,j,k),B=(b,c,f,g),则,C=(a,b,c,d,e,f,g,h,j,k)void Merge(SqList *La, SqList *Lb,SqList *Lc){int i,j,k;i=j=0;k=0;while (i<=La->Length-1 && j<=Lb->Length-1){if(La->data[i]< Lb->data[j]) {InsertList(Lc,La->data[i],k+1);k++;}else{InsertList(Lc,Lb->data[j],k+1);j++;k++;}} // end while/*将La和Lb的元素插入到Lc中*/while (i<=La->Length-1) {InsertList(Lc,La->data[i],k+1);i++;k++;}while (j<=Lb->Length-1) {InsertList(Lc,Lb->data[j],k+1);j++;k++;}}例3、已知L是无头结点的单链表的头指针,其中*p结点既不是首元结点,也不是尾元结点,试写出下列操作的语句序列:(1)在*P结点后插入*S结点;s->next=p->next;p->next=s;(2)在*p结点前插入*s结点;q=L;While(q->next!=p)q=q->next;s->next=q->next;q->next=s;(3)在表首插入*S结点;S->next=L;L =S;(4)在表尾插入*S结点。