复习提纲:算法与数据结构
软件学院数据结构与算法复习提纲

软件学院数据结构与算法复习提纲软件学院数据结构与算法复习提纲(2013 年秋季学期)1、Data structures and algorithms概念:type, simple type, composite type, aggregate type, data type, ADT, data structure, problems,function, algorithms, programs类型(type):是一组值的集合。
简单类型:值不含子结构;复杂类型(或组合类型):含有子结构(或由子结构组合而成)。
数据类型:指一种类型和定义在该类型上的一组操作。
ADT抽象数据类型:指数据结构作为一个软件组件的实现。
一个数学模型及定义在这个模型上的一组操作(或运算)的总称.数据结构:ADT的实现。
问题:一个函数,或者是输入到输出的一种映射。
函数:输入和输出之间的一种映射关系。
算法:一种能够解决问题的、有具体步骤的方法。
程序:算法在计算机程序设计语言中的实现。
2、Mathematical preliminaries概念:set, recursion集合set:由互不相同的成员或者元素构成的一个整体。
递归:如果一种算法调用自己来完成它的部分工作,就称这种算法师递归的。
3、Algorithm Analysis概念:asymptotic algorithm analysis, growth rate, best/worst/average case, upper/lower bound,space/time tradeoff, big-Oh/big-Omega/Theta notation渐近算法分析:有一种办法能够解决所有这些问题,简称算法分析。
增长率:指当输入的值增长时,算法代价的增长速率。
最佳(最差)情况:某种算法的运行时间在这种情况下最短(最长)。
平均情况:这种情况下,算法平均检查n/2个元素。
上(下)限:该算法可能有的最高(最差)增长率。
重庆大学《数据结构与算法》复习提纲(学生版)

《数据结构与算法》复习提纲一、程序设计原理理解二、栈(1) 栈说明:栈的定义和基本操作栈是一种特殊的线性表,只能在固定一段进行插入或者删除操作。
包含栈顶,栈底。
表中无元素时,成为空栈。
操作:empty,top,push,pop(2)栈的实现:顺序栈的实现利用连续的存储单元依次存放数据元素。
确定那一端表示栈底。
一般top=-1来表示空栈。
进栈操作时,先使top加1,用以指示新的栈顶位置。
先进后出。
上溢,top>=stacksize-1.下溢,top=-1(3) 应用-桌面计算器:理解(4) 应用-括号的匹配:理解(5) 抽象数据类型及其实现:理解三、队列(1) 定义:队列的定义和基本操作队列也是一种特殊的线性表,删除操作限定在表的一段,而插入操作在表的另一端。
队尾(rear)和对首(front)。
先进先出。
append,server,retrieve,empty,clear,full,size(2)队列的实现:顺序队列的实现删除操作由front指示,插入操作由rear指示。
rear》=maxsize队满,rear=front,表示队空。
(3)C++队列的循环实现:顺序队列的实现(4)演示和测试:理解(5) 队列的应用-模拟:理解操作系统中的各种资源请求排队和各种数据缓冲区的先进先出管理,各种应用系统的时间规划、时间模拟,树类和图类问题中的一些非递归搜索算法等等。
四、链式栈和链式队列(1) 指针和链式结构:理解链表的思想是为表结构的每一个元素扩充一个指针,这个指针给出了表中下一个元素的位置。
指针被定义为一个对象,经常是变量,用于存储其他对象的位置。
动态内存分配。
动态内存分配的优点:不需要预先分配存储空间,分配的空间可以根据程序的扩大和缩小(2)链栈:链式栈的实现(3) 带保护的链栈:理解(4) 链式队列:链式队列的实现(5) 应用-多项式运算:理解(6) 抽象数据类型及其实现:栈和队列的抽象数据类型定义五、递归(1) 递归导言:递归算法的两个组成部分、非形式化描述转化为递归定义(如求阶乘等)每个递归过程包括两个部分:终止条件,循环部分1.不需用递归处理的最小的、基本的问题2.将特定的问题简化成一个或多个更小的问题的通用方法,由此向前,最终将问题一直简化成基本问题。
山西省考研计算机专业算法与数据结构复习指南

山西省考研计算机专业算法与数据结构复习指南数据结构与算法是计算机专业考研的核心科目之一。
在考前紧张的备战阶段,一份全面的复习指南对于考生来说至关重要。
本文将为山西省考研计算机专业的考生提供一份详尽的算法与数据结构复习指南,帮助大家有针对性地备考,取得优异成绩。
一、算法复习1. 基本算法思想基本算法思想是算法设计的基础,掌握常见的算法思想对于解决各类算法问题非常重要。
以下是常见的算法思想:- 贪心算法:贪心算法通过每一步选择最优解来达到整体最优,适用于一些特殊问题。
- 动态规划:动态规划将大问题分解为小问题,并保存已解决问题的结果,避免重复计算。
- 分治法:分治法将大问题分解为相互独立的子问题,通过解决子问题来解决原始问题。
2. 常见算法及其实现了解并掌握常见的算法及其实现方式,有助于理解算法的原理和应用场景。
以下是一些常见的算法:- 排序算法:包括冒泡排序、选择排序、插入排序、快速排序等。
- 查找算法:包括顺序查找、二分查找、哈希查找、二叉查找树等。
- 图算法:包括深度优先搜索、广度优先搜索、最短路径算法等。
3. 算法复杂度分析算法复杂度分析是评估算法性能的重要指标。
了解不同算法的时间复杂度和空间复杂度,可以优化算法的选择和设计。
常见的算法复杂度包括:- 时间复杂度:衡量算法的执行时间。
- 空间复杂度:衡量算法的内存消耗。
二、数据结构复习1. 线性表线性表是数据结构中最基本的部分。
熟悉线性表的类型、特点和操作,能够灵活运用线性表解决各类问题。
以下是一些常见的线性表:- 数组:一段连续的内存空间,可以存储相同类型的元素。
- 链表:由节点组成的数据结构,每个节点包含数据和指向下一节点的指针。
2. 树结构树结构是非线性数据结构,广泛应用于各类算法和数据库中。
掌握树的基本概念和常见操作,对于算法设计至关重要。
以下是一些常见的树结构:- 二叉树:每个节点最多有两个子节点的树结构。
- 红黑树:一种自平衡的二叉搜索树,保持树的平衡性。
数据结构复习资料复习提纲知识要点归纳

数据结构复习资料复习提纲知识要点归纳数据结构复习资料:复习提纲知识要点归纳一、数据结构概述1. 数据结构的定义和作用2. 常见的数据结构类型3. 数据结构与算法的关系二、线性结构1. 数组的概念及其特点2. 链表的概念及其分类3. 栈的定义和基本操作4. 队列的定义和基本操作三、树结构1. 树的基本概念及定义2. 二叉树的性质和遍历方式3. 平衡二叉树的概念及应用4. 堆的定义和基本操作四、图结构1. 图的基本概念及表示方法2. 图的遍历算法:深度优先搜索和广度优先搜索3. 最短路径算法及其应用4. 最小生成树算法及其应用五、查找与排序1. 查找算法的分类及其特点2. 顺序查找和二分查找算法3. 哈希查找算法及其应用4. 常见的排序算法:冒泡排序、插入排序、选择排序、归并排序、快速排序六、高级数据结构1. 图的高级算法:拓扑排序和关键路径2. 并查集的定义和操作3. 线段树的概念及其应用4. Trie树的概念及其应用七、应用案例1. 使用数据结构解决实际问题的案例介绍2. 如何选择适合的数据结构和算法八、复杂度分析1. 时间复杂度和空间复杂度的定义2. 如何进行复杂度分析3. 常见算法的复杂度比较九、常见问题及解决方法1. 数据结构相关的常见问题解答2. 如何优化算法的性能十、总结与展望1. 数据结构学习的重要性和难点2. 对未来数据结构的发展趋势的展望以上是数据结构复习资料的复习提纲知识要点归纳。
希望能够帮助你进行复习和回顾,加深对数据结构的理解和掌握。
在学习过程中,要注重理论与实践相结合,多进行编程练习和实际应用,提高数据结构的实际运用能力。
祝你复习顺利,取得好成绩!。
算法与数据结构大纲

算法与数据结构大纲一、课程简介算法与数据结构是计算机科学中的核心基础课程,旨在介绍算法设计和数据结构的基本概念、原理和方法,培养学生的算法思维和问题解决能力。
二、教学目标1. 了解算法与数据结构的基本概念和原理;2. 掌握常见的数据结构及其操作;3. 学习常见的算法设计策略和分析方法;4. 能够运用所学知识解决实际问题。
三、教学内容1. 算法基础- 算法的概念和特征- 算法的表示方法- 算法的分析:时间复杂度和空间复杂度2. 数据结构基础- 数据结构的概念和分类- 抽象数据类型- 数据结构的操作和实现3. 线性结构- 数组- 链表- 栈和队列4. 树状结构- 树的概念和基本操作- 二叉树- 二叉搜索树- 平衡二叉树5. 图状结构- 图的概念和基本操作- 图的存储和表示- 图的遍历6. 排序算法- 插入排序- 选择排序- 冒泡排序- 快速排序- 归并排序7. 查找算法- 顺序查找- 二分查找- 哈希查找8. 算法设计策略- 分治法- 动态规划法- 回溯法- 贪心算法四、教学方法1. 理论讲解:通过课堂讲解,介绍算法与数据结构的基本概念、原理和方法;2. 编程实践:通过编程练习,让学生掌握数据结构的实现和算法的应用;3. 案例分析:通过实际问题的解决,让学生学会运用所学知识解决实际问题;4. 小组讨论:通过小组讨论,培养学生的团队合作和问题解决能力。
五、考核方式1. 平时作业:包括课后作业、编程练习和课堂表现等;2. 期中考试:考核学生对前半部分教学内容的掌握程度;3. 期末考试:考核学生对整个课程内容的掌握程度。
六、教学资料1. 教材:《算法与数据结构》(教材名称),(作者)著,(出版社)出版;2. 参考资料:《数据结构与算法分析》(参考书名称),(作者)著,(出版社)出版。
七、教学设备1. 计算机实验室;2. 投影仪;3. 编程软件。
数据结构与算法复习提纲

数据结构与算法复习提纲数据结构与算法复习提纲线性表部分:1、顺序表的基本操作:创建、插⼊、删除、查找、修改、遍历、输出2、带头结点单链表的基本操作:创建、插⼊(头插、尾插、任意位置插⼊)、删除(头删、尾删、任意位置删除)、查找、修改、定位、输出、求表长、遍历的基本应⽤3、带头结点的循环单链表的基本操作:创建、插⼊(头插、尾插、任意位置插⼊)、删除(头删、尾删、任意位置删除)、查找、修改、定位、输出、求表长、遍历的基本应⽤4、线性表的应⽤:有序顺序表的插⼊;有序单链表的插⼊;顺序表的逆置、单链表的逆置;顺序表归并、单链表归并栈和队列部分:1、顺序栈的基本操作:初始化、⼊栈、出栈、取得栈顶元素(注意top变量的取值)、判栈空、判栈满、遍历2、链栈的基本操作:初始化、⼊栈、出栈、判栈空、遍历3、循环队列的基本操作:初始化、⼊队、出队、队空队满的判定条件、求队列长度、遍历;4、链队列的基本操作:初始化、⼊队、出队、队空、遍历5、表达式求值:栈中数据的变化过程树和⼆叉树1、⼆叉树的5个基本性质2、⼆叉树的顺序存储结构3、⼆叉链表存储,相关的基本操作:前中后三种遍历、层次遍历、创建、求结点个数、求叶⼦个数、求深度、基于遍历的应⽤4、树的孩⼦兄弟链表存储结构,相关的基本操作:创建、查找某个结点的孩⼦、插⼊⼀个结点、求深度、先根、后根遍历输出5、⼆叉树、树与森林的应⽤:由两种遍历序列确定⼀棵⼆叉树;⼆叉树的三种遍历序列;由两种遍历序列确定⼀棵树;树(森林)与⼆叉树之间的相互转换;6、哈夫曼树及其应⽤:构造哈夫曼树、哈夫曼编码、求wpl;注意:构造哈夫曼树过程相关存储结构的变化图的部分1、图的基本概念2、图的邻接矩阵存储结构:创建、深度遍历、⼴度遍历3、图的邻接表存储结构:创建、深度遍历、⼴度遍历4、最⼩⽣成树:prim算法、kruscal算法5、最短路径:迪杰斯特拉算法、floyd算法6、拓扑排序、关键路径查找与排序部分1、带哨兵的顺序查找:算法、ASL2、折半查找:算法、查找判定树、成功与不成功的ASL3、⼆叉排序树的构造、平衡⼆叉树的构造、成功与不成功的ASL4、哈希表:构造、线性探测、⼆次探测、拉链法;成功与不成功的ASL5、直接插⼊排序、希尔排序、冒泡排序、快速排序,⼀趟排序的结果。
数据结构与算法复习提纲(详细版)

数据结构与算法复习提纲(详细版)数据结构与算法复习提纲第一章引论一、数学知识复习1、对数(重要公式:X A=B当且仅当A=log X B;关键思路:将对数转化成为指数分析)2、级数(重要公式:∑A i和∑i A;关键思路:同时乘上某个系数再相减)3、证明方法(数学归纳法和反证法:三个关键步骤(归纳基础、归纳假设、归纳证明))二、C++类1、构造函数(使用默认参数的构造函数;初始化列表)2、访问函数和修改函数(关键字const)3、接口与实现的分离(声明与实现必须精确匹配,两个例外:默认参数和explicit)三、C++细节1、参数传递(一般情形:单向传递/引用:双向传递/常引用:避免大对象的拷贝)2、★三大函数(当数据成员含有指针类型,三大函数必须显式给出;避免浅复制)⑴、析构函数(形式:~类名()/作用:释放资源)⑵、复制构造函数(形式:类名(const 类名&rhs)/作用:利用已有对象复制一个新对象)⑶、operator=(形式:const 类名&operator=(const 类名&rhs)/作用:赋值)四、模板1、★函数模板定义(template 通用函数定义)2、★类模板⑴、定义(template class 类模板名)⑵、调用(class 类模板名<实际参数> 对象名(参数))3、函数对象(定义一个包含零个数据成员和一个成员函数的类,然后传递该类的实例)五、矩阵1、基本思想(矩阵利用向量的向量来实现,即vector array)2、典型代码分析(包括构造函数和operator[]重载)第二章算法分析一、数学基础1、重要定义⑴、f(N)=Ο(g(N))(若存在正常数C和n0,使得当N≥n0时,有f(N)≤Cg(N))⑵、f(N)=Ω(g(N))、f(N)=Θ(g(N))和f(N)=ο(g(N)))2、★重要工具⑴、性质:log k N=O(N)⑵、洛比塔法则:判断两个函数的相对增长率二、最大子列和问题1、算法Ⅰ⑴、算法思想(i表示序列起点,j表示序列终点,k从i扫描到j)⑵、★时间复杂度分析(注意分析方法:∑(i:0~N-1)∑(j:i~N-1)∑(k:i~j))⑶、★算法的缺陷(重复计算)2、算法Ⅱ算法思想(i表示序列起点,j表示序列终点(省略辅助变量k))3、算法Ⅲ⑴、★分治策略(递归程序:传递数组和左右边界,后者界定了数组要被处理的范围/单行驱动程序:传递数组和0,N-1而启动递归程序)⑵、算法思想(递归出口分析;最大子序列和的三种可能情况)⑶、★时间复杂度分析(重要公式:T(N)=2T(N/2)+N)4、算法Ⅳ(任何负的子序列不可能是最优子序列的前缀)三、折半搜索1、概念:折半查找(在已排好序的队列中查找数X)2、算法思想(关键是分析low、high和mid)第三章表、栈和队列一、STL中的向量和表(STL,Standard Template Library,标准模板库)1、STL定义了vector(向量)和list(双向链表)两个类模板2、★★迭代器(iterator)⑴、迭代器的作用(位置标记)⑵、迭代器的声明(典例:vecto r。
算法与数据结构基础知识

算法与数据结构基础知识一、引言算法与数据结构是计算机科学中最基础、最重要的两个概念。
算法是解决问题的一系列步骤或规则,数据结构是组织和存储数据的方法和技术。
掌握算法与数据结构基础知识,对于计算机科学的学习和实践具有重要意义。
二、算法基础知识1. 什么是算法算法是解决特定问题的一系列步骤或规则,它可以被描述为一个计算模型和一组操作规则。
一个好的算法应该具有正确性、可读性、效率和鲁棒性等特点。
2. 算法的分类常见的算法分类包括:递归算法、贪心算法、分治算法、动态规划算法、回溯算法和随机算法等。
不同的问题可能适用不同的算法,需要根据问题的特点选择最合适的算法。
3. 算法的复杂度算法的复杂度描述了算法的执行时间和空间资源消耗情况。
常见的复杂度包括时间复杂度和空间复杂度。
时间复杂度表示算法的执行时间与问题规模的增长关系,常见的时间复杂度有O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)等。
空间复杂度表示算法在执行过程中所需要的额外空间。
三、数据结构基础知识1. 什么是数据结构数据结构是组织和存储数据的方法和技术,它包括各种数据类型和数据之间的关系。
常见的数据结构包括数组、链表、栈、队列、树、图、堆等。
2. 数据结构的分类数据结构可以分为线性结构和非线性结构。
线性结构包括数组、链表、栈和队列等,数据元素之间存在一对一的关系。
非线性结构包括树、图和堆等,数据元素之间存在一对多或多对多的关系。
3. 数据结构的选择在实际问题中,根据问题的特点和需求选择合适的数据结构非常重要。
例如,对于需要快速查找的问题,可以选择哈希表或二叉搜索树作为数据结构;对于需要快速插入和删除的问题,可以选择链表或堆作为数据结构。
四、算法与数据结构的应用算法与数据结构广泛应用于计算机科学的各个领域,例如:1. 搜索引擎:通过使用合适的算法和数据结构,搜索引擎能够快速地从海量数据中找到用户需要的信息。
2. 图像处理:在图像处理中,算法和数据结构被用于图像的压缩、特征提取、目标识别等过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、算法的概念是为了解决某类问题而规定的一个有限长的操作序列。
特性:①有穷性②确定性③可行性④输入⑤输出评价标准:①正确性②可读性③健壮性④高效性2、算法的复杂度: 算法计算量所需资源的大小时间复杂度:T(n)=O(f(n)),他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的时间复杂度空间复杂度:S(n)=O(f(n)),算法所需空间的度量。
3、数据结构中的逻辑结构分为:线性和非线性结构4、线性表的两种存储方式:顺序存储和链式存储的特点及比较。
顺序存储:指用一组地址连续的存储单元依次存储线性表的数据元素链式存储:用一组任意的存储单元存储线性表的数据元素。
5、线性表的特点①存在唯一的一个被称作“第一个”的数据元素②存在唯一的一个被称作“最后一个”的数据元素③除第一个之外,结构中的每一个数据元素均只有一个前驱④除最后一个之外,结构中的每一个数据元素均只有一个后继6、在长度为n的顺序表中的第i个位置处插入一个元素,需要移动多少个元素?n-i+17、理解算法:线性表La和Lb,将两个表合并成一个新的线性表并存于La中。
8、带头结点的单链表和不带头结点的单链表为空的条件分别是?带头结点的循环单链表为空的条件是?带头结点的单链表为空的条件:没有下一个节点L->next=NULL不带头结点的单链表为空的条件:L=NULL循环单链表为空的条件:head->next=head带头结点的循环单链表为空的条件是9、在单链表中插入结点的算法中,指针如何修改。
P3410、理解单链表中插入新结点的算法p3411、理解双向链表中插入新结点的算法p4012、理解栈和队列的操作特点:先进后出,先进先出。
已知进栈顺序,求可能的出栈顺序。
链栈相对于顺序栈的优点是什么?链栈在入栈前不需要判断栈是否为满,只需要为入栈元素动态分配一个节点空间13、理解算法:执行进栈操作,则先要判断栈S是否为满,若不满再将记录栈顶的下标变量top加1,再将进栈元素放进栈顶位置上。
P5914、循环单链表的特点:尾指针的next指向头结点15、循环队列中进行插入和删除操作后,其头尾指针如何变化?根据循环队列的容量及头尾指针,求循环队列中元素的个数。
插入:Q.rear=(Q.rear+1)%MAXQSIZE //尾指针加1删除:Q.front=(Q.front+1)%MAXQSIZE //头指针加1元素个数:(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE16、用那种数据结构来实现括号匹配的算法?17、已知二维数组的行数和列数,及每个元素需要的存储单元数,求其需要的存储容量。
18、特殊矩阵进行压缩存储的目的是为了节约存储空间19、对称矩阵的压缩存储,求某元素的存储地址。
P10120、稀疏矩阵的压缩存储方法一般有三元组法和十字链表法21、求某广义表的表尾p103取出的表尾为除去表头之外,由其余元素构成的表22、字串的定义,子串定位函数index(s1,s2)的理解串中任意个连续的字符组成的子序列称为该串的字串23、已知树的孩子链表,求树及其带双亲的孩子链表24、二叉树的常用性质的应用:性质1-性质425、已知完全二叉树中的结点个数,求叶子结点的个数26、算法设计:求二叉树中度分别为0、1、2的结点个数27、已知二叉树的中序遍历序列和后序遍历序列,或已知二叉树的中序遍历序列和前序遍历序列,求二叉树的形态28、哈夫曼树的特点,哈夫曼树的应用:给出权值,求哈夫曼树及哈夫曼编码。
29、根据图的邻接矩阵存储,求某顶点的入度和出度。
30、已知图的顶点和边,求该图的深度优先遍历31、连通图的特点:n个顶点至少有多少条边?32、根据图的邻接表求邻接矩阵,根据邻接矩阵求深度优先遍历。
33、折半查找的条件:顺序存储,且本身有序。
并理解折半查找的过程34、散列查找的查找过程:如何根据散列函数构造散列表,解决冲突的方法?求散列查找的平均查找长度。
35、排序中的稳定性是指:关键字值相同的记录,其相对位置在排序后不发生变化。
36、掌握冒泡排序的排序过程及算法实现。
37、插入类排序的特点38、根据一组关键字序列,构造二叉排序树,并求平均情况下的平均查找长度。
39、已知一组关键字序列,求基数排序每趟的排序过程。
40、给出一段代码,对其进行时间复杂度的分析。
(关键语句的执行次数,和n的数量级的关系)1、计算机算法主要是指( C )。
A.计算方法B.排序方法C.解决问题的有限运算序列D.数据的调度方法1、关于逻辑结构,以下说法错误的是( D )A.逻辑结构与数据元素本身的形式,内容无关B.逻辑结构与数据元素本身的相对位置无关C.逻辑结构与所含数据元素的个数无关D.逻辑结构与数据元素的存储有关,是不能独立于计算机的2、树形结构的特点是,一个结点可以有( B )A.多个直接前驱 B.多个直接后继C.多个前驱 D.一个后继2、数据结构从逻辑上分为( C )。
A.内部结构与外部结构 B.静态结构与动态结构C.线性结构与非线性结构 D.逻辑结构与非逻辑结构3、以下关于线性表说法正确的是( D )。
A.每个元素都有一个前驱和一个后继B.线性表至少有一个元素C.线性表中的元素必须按由大到小排序D.除首尾元素之外,其他元素都仅有一个直接前驱和一个直接后继3、设栈的入栈序列是a,b,c,d,e则不可能的出栈序列是( C )。
A.e,d,c,b,a B.d,e,c,b,aC.d,c,e,a,b D.a,b,c,d,e4、设栈的入栈序列是1,2,3,4,则不可能的出栈序列是( D )。
A.1,2,4,3 B.2,1,3,4C.1,4,3,2 D.4,3,1,24、判定循环队列Q(元素最多为m个,队头指针为front,对尾指针rear)为空的条件是( C )。
A.rear-front=m B.rear-front-1=mC.rear=front D.front=(rear+1)%m4、判定循环队列Q(元素最多为m个,队头指针为front,队尾指针rear)为满的条件是( D )。
A.rear-front=m B.rear-front-1=mC.front=rear%m D.front=(rear+1)%m4、栈和队列的共同点是(C)A.都是先进后出 B.都是先进先出C.只允许在端点处插入和删除元素 D.没有共同点4、表达式a*(b+c)-d的后缀表达式为(B)A.abcd*+- B.abc+*d-C.abc*+d- D.- +*abcd5、线性表在链式存储中各结点之间的地址( D )A.必须全部地址连续 B.部分地址必须连续C.不能连续 D.连续与否无要求5、不带头结点的单链表Head为空的判定条件是( A )。
A.Head=NULL B.Head->next=NULLC.Head->next=Head D.Head!=NULL6、在单链表中,若要在p所指向的结点之后插入一个新的结点,则需要相继修改( B )个指针域的值。
A.1 B.2 C.3 D.46、在单链表中,若P所指结点不是最后结点,在P之后插入S所指结点,则执行( B )。
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;7、链栈相较于顺序栈而言,优点为( B )。
A.插入操作更简单 B.通常不会出现栈满的情况C.不会出现栈空的情况 D.删除操作更方便8、数组的两种常用基本操作是()A.建立与删除 B.索引与修改C.查找和修改 D.查找与索引8、一维数组与线性表的区别是( A )。
A.前者长度固定,后者长度可变 B. 后者长度固定,前者长度可变 C.两者长度都固定 D.两者长度均可变9、数组A中,行下标i为0~7,列下标j为0~9,每个元素占用3个字节长度,从首地址PA开始连续连续存放数组A中元素于存储器,则至少需要的单元数是( D )。
A.80 B.100 C.270 D. 24010、设广义表L=((A,B,C)),则L的长度和深度分别为( C )A.3,1 B.3,2 C.1,2 D.1,110、对稀疏矩阵进行压缩存储的目的是( C )。
A.便于进行矩阵运算 B.便于输入输出C.节省存储空间 D.降低运算的时间复杂度11、C语言中″bcd321ABCD ″的子串可以是( D )。
A.abcd B.321AB C.″abcABC ″ D.″21AB ″11、串的长度是指( B )A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数 D.串中所含非空格字符的个数12、深度为4的二叉树最多有( C )个结点A.8 B.16 C.15 D.1712、已知某二叉树的后序遍历序列为d,a,b,e,c,中序遍历序列为d,e,b,a,c,则其先序遍历序列为()A.a,c,b,e,d B.d,e,c,a,bC.d,e,a,b,c D.c,e,d,b,a12、对n(n≥2)个权值均不相同的字符构成哈夫曼树,则该树表述错误的是( A )。
A. 该树一定是一棵完全二叉树B. 树中没有度为1的结点C. 树中两个权值最小的结点一定是兄弟结点D.树中任一非叶节点的权值一定不小于下一层任一结点的权值13、连通具有n个顶点的无向图至少需要( D )条边。
A. nB.n+1C. n/2D. n-113、设无向图G=(V,E)中含7个顶点,则在图G在任何情况下都是联通的,则至少需要的边数为( C )。
A. 6B.14C. 16D. 1814、散列函数值应按( C )取其值域的每一个值。
A.最大概率 B.最小概率C.同等概率 D.平均概率14、排序方法的稳定性是指( D )。
A.排序算法能在规定时间内完成排序B.排序算法能得到确定的结果C. 排序算法不允许有相同关键字的元素D.对于关键字值相同的记录,其相对位置在排序后不发生变化15、在有序表3,9,14,27,39,44,56,68,71,85,90中,用折半查找法查找关键值码27,所需关键码的比较次数为( B )。
A. 2B.3C. 4D.515、冒泡排序的时间复杂度为( B )A. O(n)B. O(n2)C. O(log2n) D. O(nlog2n)二、填空题(10小题,每小题2分,共20分)1、算法计算量的资源大小称之为计算的复杂性。
1、一般而言,树形结构中元素之间存在 1:n 的对应比例关系2、当利用长度为n的数组顺序存储一个栈时,假设用top==0表示栈空,则向这个栈插入一个元素时,首先应执行 top=top+1 来修改top指针。