自考数据结构导论复习资料

合集下载

自考02142数据结构导论考前密押120题及答案含解析

自考02142数据结构导论考前密押120题及答案含解析

目录第一章概论 (1)第二章线性表 (7)第三章栈、队列和数组 (13)第四章树和二叉树 (17)第五章图 (22)第六章查找 (28)第七章排序 (33)第一章概论一、单选题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.计算n!(整数n≥0)的递归算法是:int Factorial(int n){if(n==0)return1;else return n*Factorial(n-1);}其时间复杂度为()n)A.O(n)B.O(log2C.O(n c)D.O(n²)8.下面程序段的时间复杂度为()for(int i=0;i<n;i++)for(int j=0;j<n;j++)A[i][j]=i×j;A.O(1)B.O(n)n) D.O(n²)C.O(log29.将长度为n的单链表链接在长度为m的单链表之后的算法时间复杂度为()A.O(n)B.O(m)C.O(n+m)D.O(n×m)二、填空题10.数据结构是指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的________方式,以及定义在该组数据上的一组操作。

11.1976年瑞士计算机科学家Niklaus Wirth曾提出一个著名公式:程序=数据结构+________。

数据结构导论自考题-1_真题-无答案

数据结构导论自考题-1_真题-无答案

数据结构导论自考题-1(总分100,考试时间90分钟)一、单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。

1. 算法的便于阅读和理解的特性称为( )A.正确性 B.易读性C.健壮性 D.时空性2. 给定有n个元素,建立一个有序单链表的时间复杂度为( )A.O(1) B.O(n)C.O(n2) D.O(nlog2n)3. 在双链表中某结点(已知其地址)前插入一新结点,其时间复杂度为( )A.O(n) B.O(1)C.O(n2) D.O(log2n)4. 顺序栈s中top为栈顶指针,指向栈顶元素所在的位置,elem为存放栈的数组,则元素e 进栈操作的主要语句为( )A.s.elem[top]=e;s.top=s.top+1;B.s.elem[top+1]=e;s.top=s.top+1;C.s.top=s.top+1;s.elem[top+1]=e;D.s.top=s.top+1;s.elem[top]=e;5. 一个数组的第一个元素的存储地址是100,每个元素占2个存储单元,则第5个元素的存储地址是( )A.110 B.108C.100 D.1206. 已知某完全二叉树采用顺序存储结构,结点数据的存放顺序依次为A、B、C、D、E、F、G、H,该完全二叉树的后序遍历序列为( )A.HDBEFCGA B.HDEBFGCAC.DHEBFGACA D.DEHBFGCA7. 除根结点外,树上每个结点( )A.可有任意多个孩子、一个双亲 B.可有任意多个孩子、任意多个双亲C.可有一个孩子、任意多个双亲 D.只有一个孩子、一个双亲8. 一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )A.250 B.500C.501 D.5059. 设有6个结点的无向图,若要确保此图是一个连通图,则至少应有边的条数是( )A.5 B.6C.7 D.810. 在含有n个顶点e条边的无向图的邻接矩阵中,零元素的个数为( )A.e B.2eC.n2-e D.n2-2e11. 设有无向图G=(V,E)和(G'=(V',E'),如G'为G的生成树,则下面说法不正确的是( )A.G'为G的子图 B.G'为G的连通分量C.G'为G的极小连通子图且V'=V D.G'是G的无环子图12. 利用逐点插入法建立序列(50,72,43,85,75,20,35,45,65,30)对应的二叉排序树以后,查找元素35要进行元素间比较的次数是( )A.4次 B.5次C.7次 D.10次13. 采用二分查找法,若当前取得的中间位置MID的元素值小于被查找值,则表明待查元素可能在表的后半部分,下次查找的起始位置通常应( )A.从MID/2位置开始 B.从MID位置开始C.从MID-1位置开始 D.从MID+1位置开始14. 当待排序序列中记录数较少或基本有序时,最适合的排序方法为( )A.直接插入排序法 B.快速排序法C.堆排序法 D.归并排序法15. 一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )A.(38,40,46,56,79,84) B.(40,38,46,79,56,84)C.(40,38,46,56,79,84) D.(40,38,46,84,56,79)二、填空题16. 算法的空间性能是指算法需要的______。

2023年10月自考02142数据结构导论试题及答案含评分标准

2023年10月自考02142数据结构导论试题及答案含评分标准

绝密 考试结束前2023年10月高等教育自学考试数据结构导论试题课程代码:021421.请考生按规定用笔将所有试题的答案涂㊁写在答题纸上㊂2.答题前,考生务必将自己的考试课程名称㊁姓名㊁准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上㊂选择题部分注意事项:每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑㊂如需改动,用橡皮擦干净后,再选涂其他答案标号㊂不能答在试题卷上㊂一㊁单项选择题:本大题共15小题,每小题2分,共30分㊂在每小题列出的备选项中只有一项是最符合题目要求的,请将其选出㊂1.时间复杂度的常数阶表示为A.O(1)B.O(n)C.O(n2)D.O(2n)2.下列关于单链表的描述,错误∙∙的是A.所有结点通过指针链接形成链表B.头指针变量不一定非要用h e a d来标识C.尾结点指针域的值N U L L称为空指针D.通常用尾指针来表示一个单链表3.线性表实现顺序存储可使用A.栈B.队列C.数组D.链表4.设单链表中指针p指向结点A,要删除A之后的结点(若存在),则修改指针的操作为A.p n e x t=p n e x t n e x tB.p=p n e x tC.p=p n e x t n e x tD.p n e x t=p5.出队列操作使用的赋值语句是A.S Q.r e a r=S Q.r e a r+1B.S Q.r e a r=S Q.r e a r-1C.S Q.f r o n t=S Q.f r o n t+1D.S Q.f r o n t=S Q.f r o n t-16.在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以t o p为栈顶指针,当栈未满时进行进栈操作,此时A.t o p不变B.t o p--C.t o p++D.t o p=07.带头结点链队列的头指针和尾指针分别为f r o n t和r e a r,则判断队列空的条件为A.f r o n t==r e a rB.f r o n t!=N U L LC.r e a r!=N U L LD.f r o n t==N U L L8.深度为k(kȡ1)的二叉树的结点数最多为A.2k-1B.2k-1C.2k+1D.2k+19.下列关于树形结构的描述,正确的是A.树形结构是线性结构B.树中每个结点可以有多个直接前驱结点C.树可以用顺序存储D.树中每个结点只能有一个直接后继结点10.对任何一棵二叉树,若度数为0的结点(叶结点)个数为n0,度数为2的结点个数为n2,则n0等于A.0B.n2-1C.n2 D.n2+111.设有10个顶点的无向图,若它为连通图,则它具有的边数最少为A.9B.10C.11D.1212.设含有n个顶点,e条弧的有向图G采用邻接表存储,则拓扑排序算法的时间复杂度为A.O(n)B.O(n+e)C.O(n2)D.O(nˑe)13.当查找表中有n个数据元素时,假设P i(i=1,2, ,n)为查找第i个元素的概率,在P i等概率的条件下,顺序查找算法的平均查找长度为A.n/2B.(n+1)/2C.nD.n+114.二维数组A以行为主序存储,每个元素占1个存储单元㊂若元素A[1][1]的存储地址是420,A[3][3]的存储地址是446,则A[5][5]的存储地址是A.470B.471C.472D.47315.冒泡排序属于A.插入排序B.归并排序C.选择排序D.交换排序非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上㊂二㊁填空题:本大题共13小题,每小题2分,共26分㊂16.在数据库中数据项又称为字段或 һ ㊂17.在单链表存储结构中,线性表的表长等于单链表中 һ 的结点个数㊂18.二叉树的顺序存储结构可以用 һ 维数组来实现㊂19.在操作系统中,为了保持多个进程P1㊁P2㊁P3和P4按某种次序依次执行,需要一个 һ来实现这个过程㊂20.对称矩阵有近一半元素可以通过其对称元素获得,因此可将含有n2个元素的对称矩阵压缩存储到含有 һ 个元素的一维数组中㊂21.设有一个带头结点的链栈,其头指针为h e a d,现有一个新结点入栈,指向该结点的指针为p,则入栈操作为 һ 和h e a d n e x t=p㊂22.满二叉树一定是 һ 二叉树㊂23.在树形结构中,结点间具有 һ 关系㊂24.在图中,序列中顶点不重复出现的路径称为 һ 路径㊂25.D i j k s t r a算法用于求 һ 问题㊂26.求最小生成树有 һ 方法和K r u s k a l方法㊂27.若在查找过程中,向表中插入不存在的数据元素,或者从表中删除某个数据元素,则称此类表为 һ 查找表㊂28.在二分查找㊁索引顺序查找和散列查找三种查找方法中,平均查找长度与元素个数没有关系的查找方法是 һ ㊂三㊁应用题:本大题共5小题,每小题6分,共30分㊂29.设有一个链栈的输入序列为A㊁B㊁C,当输出序列分别为A B C和B C A时,请写出对应的进栈和出栈过程㊂30.设有一森林F如题30图所示,请分别写出先序遍历和中序遍历的序列㊂题30图31.如题31图所示长度为13的散列表,其散列函数为H(k e y)=k e y m o d13,在表中已填入键值分别为16,30,54的元素㊂(1)现要插入键值为29的元素,应用线性探测法,计算填入散列表中单元的序号㊂(要求给出求解过程)(2)线性探测法中,如何减少堆积的机会?0123456789101112541630题图32.如题32图所示的图结构,请写出以10为源点的广度优先搜索得到的顶点访问序列,并画出搜索过程图㊂(同等情况下,值小的结点优先访问)题32图33.给定有序表D={006,087,155,188,220,465,505,508,511,586,656,670,700,766},用二分查找法在D中查找511,试给出查找过程㊂四㊁算法设计题:本大题共2小题,每小题7分,共14分㊂34.编制函数求1+2+ +n㊂35.已知循环队列的结构类型如下:t y p e d e f s t r u c t c y c q u e u e{D a t a T y p e d a t a m a x s i z ei n t f r o n t r e a r}C y c Q u eC y c Q u e C Q设计入队列的算法㊂绝密 启用前2023年10月高等教育自学考试全国统一命题考试数据结构导论试题答案及评分参考(课程代码 02142)一㊁单项选择题:本大题共15小题,每小题2分,共30分㊂1.A2.D3.C4.A5.C6.C7.B8.B9.C10.D11.A 12.B 13.B 14.C 15.D 二㊁填空题:本大题共13小题,每小题2分,共26分㊂16.域17.数据元素18.一19.队列20.n (n +1)/221.pn e x t =h e adn e x t22.完全23.层次24.简单25.单源最短路径26.P r i m27.动态28.散列查找三㊁应用题:本大题共5小题,每小题6分,共30分㊂29.输出A B C :A 进,A 出,B 进,B 出,C 进,C 出;(3分)输出B C A :A 进,B 进,B 出,C 进,C 出,A 出㊂(3分)30.先序序列为A B C D E F G H J I ;(3分)中序序列为B C D A F E J H I G ㊂(3分)31.(1)散列函数求出其散列地址为3,在地址3上面已有元素16,发生冲突㊂(1分)应用线性探测法,得到下一个地址为d +1=4,仍冲突,(1分)则再求下一个地址d +2=5,这个位置上没有元素,将元素填入散列表中序号为5的单元㊂(2分)(2)应设法使后继散列地址尽量均匀地分散在整个散列表中㊂(2分)32.序列:10,20,30,50,40,60(3分)答32图(3分)33.01(1)006 02087 03155 04188 05220 06465 07505 08508 09511 10586 11656 12670 13700 14766ʏl o wʏm i dʏh i gh (2分)(2)006 087 155 188 220 465 505 508 511 586 656 670 700 766ʏʏʏl o w m i d h i gh (2分)(3)006 087 155 188 220 465 505 508 511 586 656 670 700 766ʏʏʏl o w m i d h i gh (2分)四㊁算法设计题:本大题共2小题,每小题7分,共14分㊂34.i n t f a c t 1(i n t n ){ i n t i ,j ,t e m p ,s ; s =0;(2分) f o r (i =1;i <=n ;i ++) {t e m p =1;(3分)f o r (j =1;j <=i ;j ++) t e m p =t e m p *j; s =s +t e m p ;}r e t u r n s ;}(2分)(注:答案不唯一,正确即可)35.i n tE n Q u e u e (C y c Q u eC Q ,D a t a T y pex ){i f ((C Q.r e a r +1)%m a x s i z e ==C Q.f r o n t ) {e r r o r ( 队列满 );r e t u r n0;}(3分)e l s e { C Q.r e a r=(C Q.r e a r +1)%m a x s i z e ; C Q.d a t a [C Q.r e a r ]=x ;(3分)r e t u r n 1; }分)。

自学考试《数据结构》各章复习要点总结

自学考试《数据结构》各章复习要点总结
星形测针的校正
测头的测力和测针的长度
测力影响测量精度 选择适合测针长度的测头,注意测力和测针长度(重量)的协调。 自动更换测针组的校正必须成组校正
测针长度与触发角度
测量元素的分析
单击此处添加文本具体内容
PART.02
元素的测针半径补偿
点的半径补偿方向,以坐标系的轴向和测头回退方向为准。
测量元素的分析
测针校正的方法
量块、环规、球 测头校正有多种方法:可以利用量块、环规进行测量,改变测针直径直到测量出准确结果。 最好的校正是使用标准球,既可以测准直径,又可以得出测针的位置关系。
为什么测针的等效直径小于名义值
只有接触后才能触发。 触发后的计数锁存的时间。 测量机停止时惯性。 测针变形。 测针越长,等效直径越小。 校正测针的速度要与测量速度一致。
面、线的测头补偿。 圆、圆柱、圆锥的半径补偿。 曲线、曲面的半径补偿。 测量误差和测点的数量
测量元素的分析
测量距离 小平面的距离。 测孔还是测圆柱。
坐标系
单击此处添加文本具体内容
PART.03
测量公差(如:位置度)的需要。 程序测量的需要。 准确测量的需要。 辅助测量。
零件坐标系
为什么建零件坐标系
几个难题
小圆弧
小于1/4圆,会出现很大的测量误差,分辨力、重复性原因。增加测量点。 改变方法,测量轮廓。 拟合的方法。(根据具体情况,探讨)
拟合法测量小圆弧
几个难题
同轴度
基准与被测的关系。 测量方法的限制。 按照实际使用的情况处理。
同轴度测量
窄平面的平行和垂直度 窄平面对矢量方向影响大的因素。 输入参考长度的选择。 转换测面为测线。
回转体零件坐标系
单击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果,请言简意赅地阐述您的观点。您的内容已经简明扼要,字字珠玑,但信息却千丝万缕、错综复杂,需要用更多的文字来表述;但请您尽可能提炼思想的精髓,否则容易造成观者的阅读压力,适得其反。

自考数据结构讲义(自考乐园版)

自考数据结构讲义(自考乐园版)

数据结构自学考试同步辅导(自考乐园版)----------------------------------------------------主讲:欧增桂第一章概论—考点精析一,基本概念和术语1. 用计算机解决问题的实质是对数据的加工,处理.2. 数据是信息的载体,它能够被计算机识别,存储和加工处理.3.数据元素是数据的基本单位.有时一个数据元素包括若干个数据项.第一章概论—考点精析4. 编程序使计算机对机内表示的数据进行操作,得到所需的结果,这项工作称为数据处理.5. 数据结构指的是数据之间的逻辑关系,也称为数据的逻辑结构.包括线性结构和非线性结构两大类.6. 数据元素及其关系在计算机存储器内的表示,称为数据的存储结构.第一章概论—考点精析(1)存储实现存储实现的基本目标是建立数据的机内表示存储结构主要内容:使用一个存储结点来存储一个数据元素;建立各存储结点之间的关联来表示数据元素之间的逻辑关系.存储结点:一个数据元素在存储结构中的存储第一章概论—考点精析(2)结点之间有如下四种存储方式:顺序存储方式:每个存储结点只含一个数据元素.所有的存储结点相继存储在一个连续的存储区内,用存储结点间的位置关系表示数据之间的逻辑关系.—随机存取链接存储方式:每一个存储结点不仅含一个数据元素,还包括指针.每一个指针指向一个与本结点有逻辑关系的结点,即用指针表示逻辑关系.—顺序存取第一章概论—考点精析索引存储方式:每一个存储结点仅含一个数据元素,所有存储结点都连续存放,仅增加一个索引表.通过关键字直接存取稠密索引表:每个结点在索引表中都有一个索引项.给出结点地址.稀疏索引表:一组结点在索引表中仅对应一个索引项.给出该组结点的起始位置.第一章概论—考点精析散列存储方式:每一个存储结点仅含一个数据元素,数据元素按散列(Hash)函数确定存储位置.—通过对关键字的计算映射.第一章概论—考点精析7. 数据类型是一个值的集合以及在这些值上定义的一组操作的总称.数据类型按其值能否分解,通常可分为原子(简单)类型和结构类型两种类型.抽象数据类型(Abstract Data Type,ADT):由一组数据结构和在该组数据结构上的一组操作组成.抽象数据类型在C++中是通过类来描述的第一章概论—考点精析二,学习数据结构的意义1. 算法+数据结构=程序2. 解决问题的一个关键步骤是选择合适的数据结构表示该问题,然后才能写出有效的算法.三,运算的描述1. 数据的运算是通过算法描述的,所以讨论算法是数据结构课程的重要内容之一.第一章概论—考点精析2. 选用算法要考虑正确性,执行算法所需时间和存储空间,同时算法应易于理解,编码,调试等.在结构中:(1) 查找运算:找出满足条件的结点的位置(2) 读取运算:读出结构中指定位置上的内容(3) 插入运算:在指定位置上增加一个新结点(4) 删除运算:撤消指定位置上的结点(5) 更新运算:修改指定结点的内容第一章概论—考点精析四,运算的实现运算实现是在确定的存储结构下,用计算机语言描述实现某种操作的算法,成为运算实现,这是数据结构的主要内容.类C语言进行算法描述第一章概论—考点精析五,算法的分析1. 包括时间和空间两个方面进行分析:时间复杂度和空间复杂度2. 时间复杂度从好到坏的级别依次是:常量阶O(1),对数阶O(log2n),线性阶O(n), 优化的平方阶O(n*log2n),平方阶O(N2),立方阶O(n3),指数阶O(2),阶乘阶O(n!)第二章线性表—考点精析一,线性表的逻辑结构—了解以下概念和术语:线性表:n(n≥0)个结点组成的有限序列线性结构中的元素是有序的元素个数可以为0 —空表元素的个数是有限的同一线性表中的元素的类型,长度相同.第二章线性表—考点精析2. 非空的线性结构有以下特点:只有一个排在第一个的元素,称为线性结构的起始元素.只有一个排在最后的元素,称为线性结构的终端元素.除起始元素外,线性结构的其它元素,仅有一个直接前驱.除终端元素外,线性结构的其它元素,仅有一个直接后继.第二章线性表—考点精析3. 线性结构的逻辑表示如下:L1=() L1是一个空的线性结构;L2=(a,b,c,d,e) L2线性结构中有5个元素,a是起始元素,e是终端元素,c的直接前驱元素是b,c的直接后继元素是d,a元素的序号是1,c元素的序号是3.第二章线性表—考点精析4. 线性表的长度:线性表中元素的个数L1=() L1线性表的长度为零L2=(a,b,c,d,e) L2线性表的长度为5第二章线性表—考点精析5. 线性表的基本运算包括(函数的结果值):InitList(L) 初始化,创建一个空表LListLength(L) 求线性表L的长度GetNode(L,i) 读取表L的第i个元素LocateNode(L,X) 查找定位元素X的位置InsertList(L,X,i) 将X插入到表L的第i个位置DeleteList(L,i)将表中第i个位置上的元素删除第二章线性表—考点精析二,线性表的顺序存储结构(一) 概念和术语顺序表:将线性表的结点按逻辑次序依次存放在一组地址连续的存储单元中,采用这种方式存储的线性表称为顺序表.在算法中,顺序表的存储形式是数组顺序表—随机存取方式第二章线性表—考点精析(二) 顺序表的运算InitList(L)初始化,创建一个长度为maxsize的空表L (固定长度) st=0第二章线性表—考点精析(5)插入运算void InsertList(SeqList *L,DataType x,int i){ int j; ‖将新结点x插入到L指向的第i个位置if(iL length+1)Error("position error");‖位置错return 0if(L length>=ListSize)Error("overflow"); ‖空间溢出第二章线性表—考点精析for(j=L length-1;j>=i-1;j--)L data[j+1]= L data[j]; ‖结点后移L data[i-1]=x; ‖插入xL length++; ‖表长加1}第二章线性表—考点精析(6)删除运算void DeleteList(SeqList *L,int i){ int j; ‖从L指向的表中删除的第i个结点if(iL length+1)Error("position error"); ‖位置错return 0for(j=i; jlength,L.size ,数组下标范围为0≤i≤length-1,例如: for(i=0;ilength;i++)表元素的值data,item if(L.list[i]==data)第二章线性表—考点精析三,线性表的链式存储结构(一) 概念和术语链表:按链式存储方式存储的线性表,分为单链表,循环链表,双链表.链表中的元素顺序用结点中的指针给出,即用指针表示结点间的逻辑关系, 元素顺序与逻辑顺序一致.采用顺序存取方式.3. 链表的长度是可变的第二章线性表—考点精析4. 单链表:一个结点存放一个元素,结点包括存放元素值的数据域(data),指向下一个结点的指针域(next)5. 循环链表:单链表的最后一个结点的指针指向表头结点.6. 双链表:循环链表中的结点包含两个指针域,分别指向前驱结点和后继结点.第二章线性表—考点精析单链表和循环链表的结点结构:双链表的结点结构:nextdataRlinkdataLlink第二章线性表—考点精析指针操作:p,q为指针指针移动,遍历:p=p->next将q指向的结点插入到p指向的结点之后: q->next =p->next; p->next=q;q指向要删除的结点,p指向其前一个结点: p->next=q->next;第二章线性表—考点精析(二) 链表的运算(单链表)InitList(L) 初始化,创建一个空表L,L next==Null第二章线性表—考点精析建立单链表的算法(头插入法)LinkList CreatListF(void){ char ch;LinkList head; ‖头指针ListNode *s; ‖工作指针head=NULL; ‖链表开始为空ch=getchar();第二章线性表—考点精析while(ch!='\n') ‖生成新结点{ s=(ListNode *)malloc(sizeof(ListNode))s data= ch;s next=head; ‖第一次为NULL,以后使其指向插入前的第一个结点head=s; ‖使head指向新结点ch=getchar();}return head; ‖返回头指针}第二章线性表—考点精析在有头结点链表中查找一个结点(按值查找)ListNode * LocateNode(LinkList head,DataType key){ ListNode *p=head next;while(p && p data!=key)‖表为空或不等p=p next; ‖扫描下一结点return p; ‖若p=NULL,查找失败,否则p指向找到的结点}第二章线性表—考点精析按输入的顺序建立单链表算法的时间复杂度为O(n).建立有序单链表算法的时间复杂度为O(n2)访问单链表的结点必须从表头指针开始对于循环链表和双链表,从表中的任一结点出发,通过指针移动都能访问表结点.链表的插入和删除只修改指针,不移动表元素.第三章栈和队列—考点精析一,栈(一) 栈的定义和基本运算—概念和术语1. 栈:栈是限定仅在一端进行插入,删除的特殊线性表.栈属于加了限定条件的线性结构栈是后进先出的线性表第三章栈和队列—考点精析(4) 进栈和出栈端称为栈顶,另一端称为栈底(5) 栈中元素个数为0时为空栈.(6) 栈中的元素个数为有限多个(7) 同一个栈中的元素的类型,长度相同新进栈的元素称为栈顶元素第三章栈和队列—考点精析栈的基本运算包括:InitStack(S) 初始化,创建空栈Push(S,X) 进栈,X成为新的栈顶元素Pop(S,X) 出栈,将栈顶元素删除,元素的值赋给XStackTop(S,X) 读栈顶元素,不删除StackEmpty(S) 判断是否空栈,空栈为1,否则为0StackFull(S) 判断是否栈满,栈满为1,否则为0第三章栈和队列—考点精析(二) 栈的顺序实现—概念和术语(1) 顺序栈:栈的顺序存储结构(2) 栈的顺序实现:使用一个数组data,栈底元素存放在data(0)中,top值为栈内元素个数及位置,空栈时top=-1(3) 使用一个结构体变量表示一个栈元素:其中一个域为数组data,另一个为top(4)使用指针变量S指向结构体:S data S top第三章栈和队列—考点精析2. 顺序存储栈的运算3. 算法分析Push(S,X) 的时间复杂度为O(1)Pop(S,X)的时间复杂度为O(1)判断栈满的条件:S->top==StackSize-1判断栈空的条件:S->top==-1第三章栈和队列—考点精析顺序存储进栈操作void Push(SeqStack *S,DataType x){ if(StackFull(S))Error("Stack overflow");//上溢S data[++S top]=x;}第三章栈和队列—考点精析顺序存储退栈操作DataType Pop(SeqStack *S){ if(StackEmpty(S))Error("Stack underflow");//下溢return S data[S top--];}第三章栈和队列—考点精析(三) 栈的链接实现—概念和术语(1) 栈的链接实现:使用链表实现栈的存储(2) 链栈:链表的首元素定为栈顶元素,尾元素为栈底. 第三章栈和队列—考点精析链栈进栈操作void Push(linkStack *S,DataType x){ StackNode *p=(StackNode *)malloc(sizeof(StackNode));p data=x;p next= S top;S top=p;}第三章栈和队列—考点精析链栈退栈操作DataType Pop(linkStack *S){ DataType x;StackNode *p= S top;if(StackEmpty(S))Error("Stack underflow");x=p data; S top= p next;free(p); return x;}第三章栈和队列—考点精析二,队列(一) 队列的定义及基本运算1.队列:限定仅能在一端进队,另一端出队的特殊线性表加限制的线性结构先进先出表第三章栈和队列—考点精析进队在队尾,出队在队首(头)可以是空队队列中的元素个数是有限的,可变的元素的类型,长度相同第三章栈和队列—考点精析队列的基本运算包括:InitQueue(Q) 初始化,创建队列EnQueue(Q,X) 进队,X成为新的队尾元素Dequeue(Q,X) 出队,将队列头元素删除,元素的值赋给X. QueueFront(Q,X) 读队列头元素,不删除QueueEmpty(S) 判断是否空队列,空队为1,否则为0. QueueFull(S) 判断是否队列满,队满为1,否则为0第三章栈和队列—考点精析(二) 顺序队列队列的顺序存储,也称循环队列使用数组data存放队列元素,范围data[0]~data[maxsize-1] 使用结构体变量表示队列,四个域:数组data,整形变量队头front,队尾rear,队中元素个数count 第三章栈和队列—考点精析(4) 用指针变量指向结构体:sq data,sq front,sq rear,sq count2.顺序队列运算初始化sq front=0,sq rear=0,sq count=0sq data的maxsize=10第三章栈和队列—考点精析(三) 链队列使用链表存储队列单链表有一个头指针,链队列还应该有一个尾指针第三章栈和队列—考点精析进队算法(循环链表)void EnQueue(CirQueue *Q,DataType x){ if(QueueFull(Q))Error("Queue overflow"); ‖队满Q count++; ‖队列元素个数加1Q data[Q rear]=x; ‖新元素插入队尾Q rear=(Q rear+1)%QueueSize;} ‖队列尾指针加1第三章栈和队列—考点精析出队算法(循环链表)DataType DeQueue(CirQueue *Q){ DataType temp;if(QueueEmpty(Q))Error("Queue underflow"); ‖队空temp= Q data[Q front];Q count--; ‖队列元素个数减1Q front=(Q front+1) %QueueSize;return temp;}第四章串—考点精析一,串的基本概念串(string):零个或多个字符组成的有限序列.如:S="a1a2a3a4……an"空串(Empty String):长度为零的串空白串(Blank String):空格组成的串子串:模式串,主串:目标串模式匹配:子串定位,串匹配第四章串—考点精析6. 对于某一个i,0 i n-m,将目标串的子串T[i..i+m-1]和模式串P[0..m-1]进行比较,若相等,则称匹配成功7. 位置i 称为位移第四章串—考点精析8. 有效位移:匹配成功9. 无效位移:匹配失败例:设T[0..n-1]="adaabaabcaabaa",P=[0..m-1]="aab",其有效位移是:T[2..4]=P[0..2]T[5..7]=P[0..2]T[9..11]=P[0..2]第四章串—考点精析二,串的运算Length(S) 求串长int strlen(char *s);2. Copy(S1,S2) 将串S2复制到S1中char *strcpy(char * to,char * from);3. Concatenation(S1,S2) 连接,将S2复制到S1的末尾char * strcat(char * to,char *from);第四章串—考点精析4. Compare(S1,S2) 比较串S1和S2的大小int strcmp(char *s1,char *s2);5. Index(S,c) 定位c在S中的位置,不在S中时返回NULLchar * stechr(char *s,char c);6. substr(char *s,int i,int j);从串S中第i个位置开始取j个字符第四章串—考点精析三,串的存储结构(一) 串的顺序存储1.静态存储分配:直接使用定长字符数组2.动态存储分配:动态分配,释放字符数组(二) 串的链式存储用单链表存储串,便于顺序串的插入,删除第四章串—考点精析(三) 串的子串定位运算(模式匹配或串匹配)1.顺序串int NaiveStrMatch(SeqString T,SeqString P){ int i,j,k;int m=P.length;int n=T.length;第四章串—考点精析for(i=0;i<=n-m;i++){ j=0;k=i;while(j<M&&T.CH[K]==P.CH[J]{ k++;j++; } ‖判定是否有效位移if(j==m)return i; ‖匹配成功}return –1; ‖匹配失败}第四章串—考点精析2.链式串LinkStrNode * LinkStrMatch(LinkString T,LinkString P){ LinkStrNode * shift,*t,*p;shift=T; ‖shift表示位移t=shift; p=P;第四章串—考点精析while(t&&p){ if(t data==p data){ t=t next; p=p next; }else { ‖确定shift为无效位移shift=shift next; ‖右移,继续t=shift; p=P; }}第四章串—考点精析if(p==NULL)return shift ‖匹配成功elsereturn NULL; ‖匹配失败}第五章多维数组和广义表—考点精析多维数组行优先顺序存储在数组A[m][n]中,计算元素A[i][j]的地址:A[0][0]的地址加上位移量(i*n+j)*d对于三维数组A[m][n][p] ,计算元素A[i][j][k]的地址: A[0][0][0]的地址加上位移量(i*n*p+j*p+k)*d 第五章多维数组和广义表—考点精析当数组下界为1时,在数组A[m][n]中,计算元素A[i][j]的地址: A[1][1]的地址加上位移量[(i-1)*n+(j-1)]*d对于三维数组A[m][n][p] ,计算元素A[i][j][k]的地址: A[1][1][1]的地址加上位移量[(i-1)*n*p+(j-1)*p+(k-1)]*d第五章多维数组和广义表—考点精析2. 列优先顺序存储在数组A[m][n]中,计算元素A[i][j]的地址:A[0][0]的地址加上位移量j*m+i对于三维数组A[m][n][p] ,计算元素A[i][j][k]的地址: A[0][0][0]的地址加上位移量(k*m*n+j*m+i)*d 第五章多维数组和广义表—考点精析当数组下界为1时,在数组A[m][n]中,计算元素A[i][j]的地址: A[1][1]的地址加上位移量[(j-1)*m+(i-1)]*d对于三维数组A[m][n][p] ,计算元素A[i][j][k]的地址: A[1][1][1]的地址加上位移量[(k-1)*m*n+(j-1)*n+(i-1)]*d第五章多维数组和广义表—考点精析一,基本概念特殊矩阵:非零元素和零元素有一定规律对称矩阵,三角矩阵,对角矩阵2. 稀疏矩阵:非零元素远少于矩阵元素总和3. 广义表:是n个元素a1a2a3……an的有限序列,其中ai或者是一个原子;或者是一个广义表第五章多维数组和广义表—考点精析二,矩阵的压缩存储特殊矩阵的存储对称矩阵:只存储上三角或下三角的元素三角矩阵:常数共享一个存储空间对角矩阵:零元素存储到一个存储空间第五章多维数组和广义表—考点精析2. 稀疏矩阵三元组表:对于矩阵Amn中的每一个非零元素,对应的三元组为(i,j,Aij)带行表的三元组表:加入一个行表,记录每行非零元素在三元组表中的起始位置第五章多维数组和广义表—考点精析仅考虑非零元素存储非零元素的行号,列号及元素值构成的三元组(i,j,aij).三元组线性表—把所有的三元组按行号为主序(主关键字),列号为辅序(次关键字)进行排列.例如: ((1,1,3),(1,4,5),(2,3,-2), (3,1,1), (3,3,4), (3,5,6),(5,3,-1))稀疏矩阵的存储结构稀疏矩阵的顺序存储类型定义:struct SMatrix{ int m,n,t;‖行,列,元素值Triple sm [MaxTerms+1]}‖s[0]不用,下标范围1~MaxTerms653113541-135433-232311row col val下标1234567┇MaxTerms第五章多维数组和广义表—考点精析用三元组表示的矩阵转置void TransMatrix(TriTupleTable *b,TriTupleTable *a) { int p,q,col;b m=a n; b n=a m; b t=a t;if(b t<=0)Error("A=0");q=0;第五章多维数组和广义表—考点精析for(col=0; col for(p=0; p0)结点的完全二叉树的深度为[log2(n+1)」或「log2n]+1性质5:对完全二叉树中编号为i的结点(1≤i ≤n,n ≥1,n为结点数)有:(1) 若i ≤[n/2],即2i ≤n,则编号为i的结点为分支结点,否则为叶子结点.第六章树—考点精析(2) 若n为奇数,则每个分支结点都既有左孩子,又有右孩子;(3) 若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左,右孩子都有.(4)若编号为i的结点有左孩子,则左孩子结点的编号为2i;若编号为i的结点有右孩子,则右孩子结点的编号为2i+1.第六章树—考点精析(5)除树根结点外,若一个结点的编号为i,则它的双亲结点的编号为[i/2],也就是说:当i为偶数时,其双亲结点的编号为i/2,它是双亲结点的左孩子.当i为奇数时,其双亲结点编号为(i-1)/2,它是双亲结点的右孩子.第六章树—考点精析二,二叉树的存储结构顺序存储结构:按完全二叉树的形式,从上层开始,每层从左到右存储链式存储结构:结点的链结构:Lchild data Rchild第六章树—考点精析三,二叉树的遍历先序遍历,先根遍历访问根结点,遍历左子树,遍历右子树中序遍历后序遍历按层遍历算法有递归方式和非递归方式两种第六章树—考点精析中序遍历二叉树的递归算法(二叉链表存储)void Inorder(binTree T){ if(T){ Inorder(T lchild); ‖遍历左子树printf("%C",T data); ‖访问根结点Inorder(T rchild); ‖遍历右子树}}第六章树—考点精析构造二叉树(二叉链表存储)void CreatBinTree(binTree *T){ char ch;if((ch=getchar())==' ')*T=NULL;else第六章树—考点精析{ *T=(BinTNode *)malloc(sizeof(BinTNode));(*T) data=ch;CreatBinTree(binTree *T)CreatBinTree(binTree *T)}}第六章树—考点精析1.前序遍历—A,B,C,D,E,F,G2.中序遍历—C,B,D,A,E,G,F3.后序遍历—C,D,B,G,F,E,A4.按层遍历—A,B,E,C,D,F,GACDFGEB第六章树—考点精析四,二叉树的线索化线索链表结点结构为:ltag=0:lchild是指向结点左孩子的指针ltag=1:lchild是指向结点前驱的左线索rtag=0:rchild是指向结点右孩子的指针rtag=1:rchild是指向结点后继的右线索lchild ltag data rtag rchild第六章树—考点精析中序前驱—中序序列中的结点的前驱中序后继—中序序列中的结点的后继线索—在结点的空指针域中存放的该结点在某次遍历次序下的前驱结点或后继结点的指针称为线索.左线索—前驱线索右线索—后继线索第六章树—考点精析线索化—遍历再加线索的过程线索二叉树—线索化的二叉树中序线索二叉树查找结点后继的规律是:树中所有叶子结点的右链是线索,非叶子结点的右链均为指针.无法直接得到后继信息,其后继为遍历右子树时访问的第一个结点,即右子树中最左下的结点.第六章树—考点精析中序线索二叉树查找结点前驱的规律是:若其左标志为1,则左链为指示其前驱的线索;否则其前驱为遍历左子树时最后访问的一个结点. 第六章树—考点精析二叉树的中序线索化void InorderThreading(BinThree p){ if(p) ‖p非空时访问结点*p{ InorderThreading(p lchild);p ltag=(p lchild) Link:Thread;p rtag=(p rchild) Link:Thread;第六章树—考点精析if(pre) ‖若p的前驱结点*p存在{ if(pre rtag==Thread)pre rchild==p;if(pre ltag==Thread)pre lchild==pre; }pre=p;InorderThreading(p rchild);}*p的前驱为右(左)线索,令*pre的右(左)线索指向中序后继(前驱)查找中序后继结点算法BinThrNode * InordSu (BinThrNode * p){ BinThrNode *q;if(p rtag==Thread)return p rchild;else{ q= p rchild;while(q ltag==Link)q= q lchild;return q;}}*p的左子树为空,返回右线索所指的中序后继从*p的右孩子开始,左子树为空,沿左链查找最左下结点.第六章树—考点精析五,树,森林与二叉树的转换树,森林与二叉树之间存在一一对应关系1.树二叉树(1) 先在所有兄弟结点之间加一连线(2) 对于每一结点,保留与其长子连线,其余去掉.第六章树—考点精析2.森林二叉树(1) 先将森林中的每一棵树变成二叉树(2) 将二叉树的根结点作为兄弟,从左到右连接第六章树—考点精析六,树的存储结构1. 双亲链表2. 孩子链表3. 孩子兄弟链表双亲链表表示法#define MaxTreeSize 100typedef char DataType;Typedef struct{ DataType data; ‖结点数据int parent; ‖双亲指针}PTreeNode;Typedef struct{ PTreeNode nodes[MaxTreeSize];int n; ‖结点总数}Ptree;Ptree T; ‖T是双亲链表第六章树—考点精析七,树和森林的遍历仅考虑树和森林的前序遍历和后序遍历第六章树—考点精析八,哈夫曼树—最优二叉树n个带权叶子结点构成的所有二叉树中,带权路径长度WPL最小的树.权值最大的叶子结点离根越近的二叉树.满二叉树或完全二叉树不一定是最优二叉树.第六章树—考点精析构造过程选取权值最小的两个结点,将其权值想加,作为这两个结点的父结点在包括新形成的结点在内的其余结点中选取权值最小的两个结点,继续上述操作,直到生成根结点.2. 哈夫曼树的存储结构3. 哈夫曼编码—最优二叉树中左孩子为0,右孩子为1,叶子结点路径的编码.第七章图—考点精析一,基本概念图:G=(V,E)V是顶点的非空有穷集合E是称为边的顶点序偶对的集合图G的子图:V'是V的子集,E'是E的子集,且E'中的边关联的顶点均在V'中,则G'=(V',E')是G的子图第七章图—考点精析1. 有向图:图G中的每条边都是有方向的有向边也称为弧,是有两个顶点组成的有序对有向图的顶点集表示为:{V1,V2,V3,V4,……}边集表示为:{, , , , ,……}有向完全图:有n*(n-1)条边的有向图第七章图—考点精析2. 无向图:图G中的每条边都是无方向的无向完全图:有n*(n-1)/2条边的无向图无向图的顶点集表示为:{V1,V2,V3,V4,……}边集表示为:{(V1,V2),(V1,V3),(V1,V4), (V2,V3),(V3,V4),……}称边(Vi,Vj)的顶点Vi和Vj互为邻接点(相邻接,相关联),边(Vi,Vj)依附或关联于顶点Vi和Vj第七章图—考点精析3. 度无向图中,顶点v的度(Degreee)是关联于该顶点的边的数目,记为D(v).有向图中,以顶点v为终点的边的数目,称为v的入度;以顶点v为始点的边的数目,称为v的出度;顶点v的度为入度与出度之和.第七章图—考点精析4. 路径:在无向图G中,若存在一个顶点序列, Vp,Vi1,Vi2,……Vim,Vq使得无向边(Vp,Vi1),(Vi1,Vi2),……(Vim,Vq)均属于E(G),则称顶点Vp到Vq存在一条路径.路径中边的数目称为路径长度除Vp和Vq外,其余顶点均不相同,称其为简单路径.第七章图—考点精析5. 有根图:图G中若存在一个顶点v,从v出发有路径可以到达图中其它所有顶点,则称此有向图为有根图,v称为图的根.第七章图—考点精析6. 连通图:任意两个顶点之间都有路径连通分量:无向图G的极大连通子图称为G的连通分量.一个连通图的连通分量等于这个连通图非连通图有多个连通分量无向图—连通图有向图—强连通图—双向连通第七章图—考点精析具有n个顶点的无向连通图至少有n-1条边,最多有n*(n-1)/2条边.具有n个顶点的有向连通图至少有n条边第七章图—考点精析二,图的存储结构邻接矩阵(Adjacencency Matrix):表示顶点之间关系的矩阵.设G=(V,E) 是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵:1 若(vi,vj)或是E(G)中的边A[i,j]=0 若(vi,vj)或不是E(G)中的边第七章图—考点精析2. 邻接表:从某一顶点出发到达其它顶点的路径构成一个链表,包括顶点表和边表.类似于树的孩子链表表示法.第七章图—考点精析三,图的遍历深度优先遍历DFS:首先访问出发点v,标记为已访问,然后依次访问v的邻接点w,若w未被访问过,以w为新的出发点,继续前面的操作…….第七章图—考点精析void DFSTraverse(ALGraph *G){ int i;for(i=0;ivisited[i]=FALSE;for(i=0;iif(! visited[i])DFS(G,i);}深度优先遍历以邻接表表示的图GVi未被访问过,以Vi为源点开始DFS搜索void DFS(ALFraph *G,int i){ EdgeNode *p;printf("%c", G adjlist[i].vertex);visited[i]=TRUE;p= G adjlist[i].firstedge;while(p){ if(! visited[p adjvex])DFS(G, p adjvex);p= p next;}}以Vi为出发点的对邻接表表示的图G进行深度优先搜索第七章图—考点精析2. 广度优先遍历BFS:首先访问出发点v,接着依次访问v的所有邻接点wi,然后依次访问与wi邻接的所有未被访问的邻接点,继续……第七章图—考点精析四,生成树和最小生成树1.生成树(1) 深度优先搜索得到深度优先生成树(2) 广度优先搜索得到广度优先生成树第七章图—考点精析2. 最小生成树带权连通图(网络)的生成树中,各边的权值的和称为生成树的权,权值最小的树称为最小生成树MST. 轻边:具有最小权值的边第七章图—考点精析MST性质:设G=(V,E)是一个网络,U是顶点V的一个真子集,对于边(u,v),若u U;v V-U,且为轻边,则边(u,v)在一棵最小生成树中.第七章图—考点精析普里姆(Prim)算法当前形成的MST始终是一棵树,按长度递增的顺序,依次将最短的边加入到MST中.用序号表示顶点集:V(G)={0,1,……,n-1}将G中边上的权作为长度,设T=(U,TE)将U看作红点, (u,v)看作紫色边, TE为红边.第七章图—考点精析子函数InitCandidateSet(G,T,r) 设置初始的候选轻边集T[0..n-2]SelectLightEdge(T,K); 从候选轻边集中选取轻边T[m]。

自学考试02142《数据结构导论》历年真题全套试题

自学考试02142《数据结构导论》历年真题全套试题

自考02142《数据结构导论》历年真题集电子书目录1. 目录 (2)2. 历年真题 (3)2.1 02142数据结构导论200410 (3)2.2 02142数据结构导论200510 (7)2.3 02142数据结构导论200610 (10)2.4 02142数据结构导论200701 (14)2.5 02142数据结构导论200710 (17)2.6 02142数据结构导论200801 (19)2.7 02142数据结构导论200810 (22)2.8 02142数据结构导论200901 (25)2.9 02142数据结构导论200910 (28)2.10 02142数据结构导论201001 (30)2.11 02142数据结构导论201010 (34)2.12 02142数据结构导论201101 (37)2.13 02142数据结构导论201110 (40)3. 相关课程 (42)1. 目录历年真题()02142数据结构导论200410()02142数据结构导论200510()02142数据结构导论200610()02142数据结构导论200701()02142数据结构导论200710()02142数据结构导论200801()02142数据结构导论200810()02142数据结构导论200901()02142数据结构导论200910()02142数据结构导论201001()02142数据结构导论201010()02142数据结构导论201101()02142数据结构导论201110()相关课程()2. 历年真题2.1 02142数据结构导论2004102004年下半年高等教育自学考试全国统一命题考试数据结构导论试题课程代码2142一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为()A.逻辑结构、存储结构、机外表示B.存储结构、逻辑结构、机外表示C.机外表示、逻辑结构、存储结构D.机外表示、存储结构、逻辑结构2.若评价算法的时间复杂性,比较对数阶量级与线性阶量级,通常()A.对数阶量级复杂性大于线性阶量级B.对数阶量级复杂性小于线性阶量级C.对数阶量级复杂性等于线性阶量级D.两者之间无法比较3.下列关于线性表的基本操作中,属于加工型的操作是()A.初始化、求表长度、插入操作B.初始化、插入、删除操作C.求表长度、读元素、定位操作D.定位、插入、删除操作4.在一个单链表中,若p所指结点不是最后结点,s指向已生成的新结点,则在p 之后插入s所指结点的正确操作是()A.s–>next=p–>next; p–>next=B.p–>next=s–>next; s–>next=C.s–>next=p; p–>next=D.s–>next=p–>next; p=5.若有三个字符的字符串序列执行入栈操作,则其所有可能的输出排列共有()A.3种B.4种C.5种D.6种6.C语言对数组元素的存放方式通常采用()A.按行为主的存储结构B.按列为主的存储结构C.按行或列为主的存储结构D.具体存储结构无法确定7.根据定义,树的叶子结点其度数()A.必大于0B.必等于0C.必等于1D.必等于28.二叉树若采用二叉链表结构表示,则对于n个结点的二叉树一定有()A.2n个指针域其中n个指针为NULLB.2n个指针域其中n+1个指针为NULLC.2n-1个指针域其中n个指针为NULLD.2n-1个指针域其中n+1个指针为NULL9.在一个无向图中,所有顶点的度数之和等于边数的()A.1倍B.2倍C.3倍D.4倍10.若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的()A.先根遍历B.中根遍历C.后根遍历D.层次遍历11.采用顺序查找法,若在表头设置岗哨,则正确的查找方式通常为()A.从第0个元素开始往后查找该数据元素B.从第1个元素开始往后查找该数据元素C.从第n个元素开始往前查找该数据元素D.从第n+1个元素开始往前查找该数据元素12.下列查找中,效率最高的查找方法是()A.顺序查找B.折半查找C.索引顺序查找D.分块查找13.索引文件通常由索引表和主文件两部分构成,其中()A.索引表和主文件均必须是有序文件B.索引表和主文件均可以是无序文件C.索引表必须是有序文件D.主文件必须是有序文件14.直接插入排序算法,其时间复杂性为()A.O(1)B.O(n)C.O(nlog2n)D.O(n2)15.下列排序方法中,属于稳定的排序方法是()A.直接插入排序法B.快速排序法C.冒泡排序法D.堆排序法二、填空题(本大题共13小题,每小题2分,共26分)请在每小题的空格中填上正确答案。

数据结构导论-自学考试-概念整理

数据结构导论-自学考试-概念整理

第一章概论第二章线性表第三章栈和队列第四章串第五章多维数组第六章树第七章图第八章排序第九章查找第一章概论1.数据:信息的载体,能被计算机识别、存储和加工处理。

2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。

3.数据结构:数据之间的相互关系,即数据的组织形式。

它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。

3)数据的运算,定义在逻辑结构上,每种逻辑结构都有一个运算集合。

常用的运算:检索/插入/删除/更新/排序。

4.数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。

数据的存储结构是逻辑结构用计算机语言的实现。

5.数据类型:一个值的集合及在值上定义的一组操作的总称。

分为:原子类型和结构类型。

6.抽象数据类型:抽象数据的组织和与之相关的操作。

优点:将数据和操作封装在一起实现了信息隐藏。

7. 抽象数据类型ADT:是在概念层上描述问题;类:是在实现层上描述问题;在应用层上操作对象(类的实例)解决问题。

8.数据的逻辑结构,简称为数据结构,有:(1)线性结构,若结构是非空集则仅有一个开始和终端结点,并且所有结点最多只有一个直接前趋和后继。

(2)非线性结构,一个结点可能有多个直接前趋和后继。

9.数据的存储结构有:1)顺序存储,把逻辑相邻的结点存储在物理上相邻的存储单元内。

2)链接存储,结点间的逻辑关系由附加指针字段表示。

3)索引存储,存储结点信息的同时,建立附加索引表,有稠密索引和稀疏索引。

4)散列存储,按结点的关键字直接计算出存储地址。

10.评价算法的质量:1正确性;算法应能正确地事先预定的功能。

2易读性;算法应易于阅读和理解,以便于调试和扩充。

3健壮性;当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果。

4高效率;即达到所需的时间和空间性能。

11.算法的时间复杂度T(n):是该算法的时间耗费,是求解问题规模n的函数。

全国自学考试数据结构导论试题及答案4套

全国自学考试数据结构导论试题及答案4套

全国自学考试数据结构导论试题及答案4套第一套试题一、选择题(每题4分,共40分)1. 下列哪个数据结构是一种非线性结构?A. 数组B. 栈C. 队列D. 树2. 下列哪种算法不适用于解决排序问题?A. 冒泡排序B. 快速排序C. 深度优先搜索D. 归并排序3. 在数据结构中,堆的底层实现通常采用哪种数据结构?A. 数组B. 栈C. 链表D. 队列4. 下列哪个选项是描述图结构的准确说法?A. 图结构是一种线性结构B. 图结构由节点和指向节点的边构成C. 图结构不能存储数据D. 图结构不支持插入和删除操作5. 下列哪个排序算法具有最坏时间复杂度为O(nlogn)?A. 冒泡排序B. 插入排序C. 选择排序D. 希尔排序二、填空题(每题4分,共40分)1. 在二叉树中,每个节点最多有____个子节点。

2. 图的两个顶点之间的路径长度是指连接这两个顶点所需的____数。

3. 链表是一种____结构。

4. 快速排序算法的核心思想是____。

5. 栈和队列都属于线性结构,其主要区别在于____操作的限制。

三、简答题(每题10分,共30分)1. 请简要描述栈的特点以及栈的应用场景。

2. 请简要介绍图的基本概念,并说明图的应用领域。

3. 请解释递归算法的原理,并给出一个使用递归算法解决问题的例子。

四、编程题(共30分)请使用任意编程语言实现一个简单的栈数据结构,并编写测试代码进行验证。

第二套试题一、选择题(每题4分,共40分)1. 在二叉搜索树中,中序遍历的结果是____。

A. 升序排列B. 降序排列C. 随机排序D. 不确定的排序2. 在哈希表结构中,解决冲突问题的常用方法是____。

A. 线性探测B. 链地址法C. 开放地址法D. 扩容法3. AVL树是一种____。

A. 二叉搜索树B. 哈希表C. B树D. 红黑树4. 以下哪个算法不是用于解决查找问题?A. 二分查找B. 深度优先搜索C. 广度优先搜索D. 哈希查找5. 以下哪个数据结构不支持随机访问元素?A. 数组B. 栈C. 链表D. 哈希表二、填空题(每题4分,共40分)1. 在二叉树中,每个节点最多有____个子节点。

自学考试《数据结构》各章复习要点总结

自学考试《数据结构》各章复习要点总结
1. 先进后出(FIL…
栈顶元素总是最后被插入的元素,最早被删除。
2. 元素具有相对位置
栈中的元素具有相对位置,即栈底元素位于栈的最下方,栈顶元素位于栈的最上方。
3. 限定插入和删除位置
只能在一端(称为栈顶)进行插入和删除操作。
03
04
05
栈的定义和特点
01
02
总结词
队列是一种特殊的线性数据结构,遵循先进先出(FIFO)原则。
顺序存储结构的优点
顺序存储结构具有访问速度快、空间利用率高等优点,适用于元素数量固定的线性表。
顺序存储结构的缺点
顺序存储结构的插入和删除操作较为复杂,需要移动大量元素,且需要预先分配连续的存储空间。
链式存储结构的概念
链式存储结构是指将线性表中的元素分散存储在若干个节点中,每个节点包含数据域和指针域,指针域指向下一个节点。
02
线性查找的时间复杂度为O(n),其中n为数据结构中的元素个数。
线性查找
二分查找是一种高效的查找算法,适用于有序的数据结构。
二分查找将数据结构分成两半,比较中间元素与目标值,根据比较结果决定在左半部分或右半部分继续查找,直到找到目标值或确定目标值不存在。
二分查找的时间复杂度为O(log n),其中n为数据结构中的元素个数。
总结词
图的存储结构
图的遍历是指按照某种规则访问图中的所有节点,并对每个节点执行相应的操作。
图的遍历算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。DFS按照深度优先的顺序访问节点,而BFS则按照广度优先的顺序访问节点。
总结词
详细描述
图的遍历
最短路径算法
最短路径算法是指在图中找到两个节点之间的最短路径,即路径长度最短的一条路径。

数据结构导论自考试题及答案

数据结构导论自考试题及答案

数据结构导论自考试题及答案一、选择题(每题2分,共10分)1. 在数据结构中,队列是一种()。

A. 集合B. 线性表C. 树D. 图答案:B2. 对于长度为n的线性表,在最坏情况下,查找一个元素需要比较的次数是()。

A. nB. n/2C. 1D. 0答案:A3. 在二叉树的遍历中,先序遍历的顺序是()。

A. 根-左-右B. 左-根-右C. 右-根-左D. 根-右-左答案:A4. 哈希表的冲突可以通过()来解决。

A. 链接法B. 排序C. 折半查找D. 二分查找答案:A5. 一个具有n个顶点的无向图至少有多少条边?A. nB. n-1C. n(n-1)/2D. 0答案:D二、填空题(每题3分,共15分)6. 在顺序存储的堆栈中,判断栈为空的条件是______。

答案:栈顶指针等于-1或者指向第一个元素的前一个位置7. 快速排序的平均时间复杂度是______。

答案:O(n log n)8. 一个长度为n的链表,删除已知第i个位置元素的时间复杂度是______。

答案:O(n)9. 一个平衡二叉树的查找、插入和删除操作的时间复杂度是______。

答案:O(log n)10. 用邻接表表示图时,对于有n个顶点的无向图,邻接表中所有链表的节点数之和至少是______。

答案:n三、简答题(每题10分,共20分)11. 什么是递归?请举例说明递归算法的工作原理。

答案:递归是一种在程序中调用自身的方法,它允许函数解决问题的更小版本,直到达到一个简单的基本情况。

例如,计算n的阶乘可以使用递归算法:```function factorial(n) {if (n <= 1) {return 1;} else {return n * factorial(n - 1);}}```12. 请简述图的遍历算法有哪些,并说明它们的特点。

答案:图的遍历算法主要有深度优先搜索(DFS)和广度优先搜索(BFS)。

DFS使用栈(可以是显式的栈或者隐式的递归调用栈)来逐层深入地访问图中的顶点,直到找到一个未被访问的邻接顶点。

自考数据结构重点(每章节整理)

自考数据结构重点(每章节整理)

自考数据结构重点(每章节整理)第一章概论1.数据是信息的载体。

2.数据元素是数据的基本单位。

3.一个数据元素可以由若干个数据项组成。

4.数据结构指的是数据之间的相互关系,即数据的组织形式。

5.数据结构一般包括以下三方面内容:数据的逻辑结构、数据的存储结构、数据的运算①数据元素之间的逻辑关系,也称数据的逻辑结构,数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。

②数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。

数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。

③数据的运算,即对数据施加的操作。

最常用的检索、插入、删除、更新、排序等。

6.数据的逻辑结构分类:线性结构和非线性结构①线性结构:若结构是非空集,则有且仅有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表是一个典型的线性结构。

栈、队列、串等都是线性结构。

②非线性结构:一个结点可能有多个直接前趋和直接后继。

数组、广义表、树和图等数据结构都是非线性结构。

7.数据的四种基本存储方法:顺序存储方法、链接存储方法、索引存储方法、散列存储方法(1)顺序存储方法:该方法把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。

通常借助程序语言的数组描述。

(2)链接存储方法:该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。

通常借助于程序语言的指针类型描述。

(3)索引存储方法:该方法通常在储存结点信息的同时,还建立附加的索引表。

索引表由若干索引项组成。

若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引,稠密索引中索引项的地址指示结点所在的存储位置。

若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引稀疏索引中索引项的地址指示一组结点的起始存储位置。

索引项的一般形式是:(关键字、地址) 关键字是能唯一标识一个结点的那些数据项。

数据结构导论自考全书重点综合复习

数据结构导论自考全书重点综合复习

6.线性表基本运算上的应用和算法设计
7.顺序表和链表的比较 8.串的概念和基本操作
12
1,线性表的基本概念 2,线性表的基本运算 起始结点、终端结点、前驱、后继、直接前驱、 直接后继、线性表长度、空表 初始化、求表长、读表元、定位、插入、删除
13
经典题例
3. 在单链表中,存储每个结点需要有两个域,一 个是数据域,另一个是指针域,指针域指向该结 点的() A.直接前趋 B.直接后继 C.开始结点 D.终端结点 18.线性表中所含结点的个数称为______。
35
经典题例
7.关于串的叙述中,正确的是( ) A.空串是只含有零个字符的串 B.空串是只含有空格字符的串 C.空串是含有零个字符或含有空格字符的串 D.串是含有一个或多个字符的有穷序列 19.串是一种特殊的线性表,串常见的存储结构有顺 序存储和________________两种方式。
36
第三章栈、队列、数组
17.通常从哪4个方面评价算法(包括程序)的质量。
6
经典题例
16.下列程序段的时间复杂度为____________。 for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) s=为________。 i=0;s=0; while(i<n){ i++;s=s+i;}
33
8,串
串的概念、空串、串长度、串相等、子串、主串
串操作: 赋值、判等、求长度、连接、求子串、 插入、删除、替换、定位
串存储: 顺序串:顺序串的紧缩格式、非紧缩格式 链串 :
34
经典题例
14.关于串的的叙述,不正确的是( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 24.两个串是相等的,当且仅当两个串的长度相等且 ________的字符都相同

自考02142《数据结构导论》真题及(2022.10)

自考02142《数据结构导论》真题及(2022.10)

自考02142《数据结构导论》真题及(2022.10)自考02142《数据结构导论》真题解析(2022.10)1.[单选题] 线性表若采用链表存储结构,内存中可用存储单位的地址A.必须是连续的B.有一部分必须是连续的C.一定是不连续的D.连续不连续都可以2.[单选题] 设有一个二维数组a[m][n],假设a[0][0]存放位置为644,a[2][2]存放位置为676,每个元素占一个存储空间,则a[3][3]存放位置为A.678B.688C.692D.6963.[单选题] 先序遍历与中序遍历结果相同的二叉树A.根结点无左孩子B.根结点无右孩子C.所有结点只有左子树D.所有结点只有右子树4.[单选题] 有n个叶结点的哈夫曼树的结点总数为A.2n-1B.2nC.2n+1D.2n25.[单选题] 设一棵完全二叉树中有65个结点,则该完全二叉树的深度为A.5B.6C.7D.86.[单选题] 设指针变量front表示链队列的队头指针,指针变量rear 表示链队列的队尾指针,指针变量s指向将要入队列的结点X,则入队列的操作序列为A.front-next= s;front=s;B.s-next= rear;rear=s;C.rear-next=s;rear=s;D.s-next= front;front=s;7.[单选题] 一个栈的输入序列为1 2 3 4,则下列序列中可能是栈的输出序列的是A.2 3 1 4B.4 1 2 3C.3 1 2 4D.3 4 1 28.[单选题] 具有先进先出特征的数据结构是A.堆栈B.队列C.最小堆D.完全二叉树9.[单选题] 不属于数据组织三个层次的是A.数据B.数据元素C.数据类型D.数据项10.[单选题] 程序段s=i=0;do {i=i+1;s=s+i;}while(i= n)的时间复杂度为A.O(n)B.O(nlog2n)C.O(n2)D.O(1)11.[单选题] 对题13图中的树进行遍历后可以得到序列ABCD的遍历方式是A.先序遍历B.中序遍历C.后序遍历D.层次遍历12.[单选题] 对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若散列函数为H(K)=K%9,则散列地址为1的元素个数是A.1B.2C.3D.413.[单选题] 一个具有n个顶点的无向完全图的边数为A.0B.n(n-1)/2C.n(n-1)D.n(n+1)14.[单选题] 就平均时间性能而言,若需以O(nlog2n)的时间复杂度完成对数组的排序,则可选择的排序方法是A.快速排序B.冒泡排序C.直接选择排序D.直接插入排序15.[单选题] 设有序表中的元素为(13,18,24,35,47,50,62),则在其中利用二分法查找值为24的元素需要经过比较的次数是A.1B.2C.3D.416.[案例题] 根据图的定义,图中顶点的最少数目是______。

复习总结资料(数据结构导论)

复习总结资料(数据结构导论)

《数据结构导论》复习资料课程代码:02142一、单项选择题1.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是A.不确定 B.n-i+1 C.i D.n-i2.具有N个结点的二叉树的二叉链表结构中,指针域为NULL的数目应为A. N B.2N C.N+1 D.2N+13.栈S最多能容纳4个元素。

现有6个元素按A、B、C、D、E、F的顺序进栈, 问下列哪一个序列是可能的出栈序列?A.(E、D、C、B、A、F) B.(B、C、E、F、A、D)C.(C、B、E、D、A、F) D.(A、D、F、E、B、C)4.已知指针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;5.设带头结点的单循环链表的头指针为head,则判断该链表是否为空的条件是A.head->next==head B.head->next==NULLC.head!=NULL D.head==NULL6.一个队列的输入序列是A,B,C,D,则该队列的输出序列是A.A,B,C,D B.B,C,D,AC.D,C,B,A D.C,D,B,A7.以行序为主序的二维数组a[3][5]中,第一个元素a[0][0]的存储地址是100,每个元素占2个存储单元,则a[1][2]的存储地址是A.100 B.108 C.114 D.1168.二叉树的中序遍历序列中,结点P排在结点Q之前的条件是A.在二叉树中P在Q的左边B.在二叉树中P在Q的右边C.在二叉树中P是Q的祖先D.在二叉树中P是Q的子孙9.有10个顶点的无向完全图的边数是A.11 B.45 C.55 D.9010.在带权有向图中求两个结点之间的最短路径可以采用的算法是A.迪杰斯特拉(Dijkstra)算法B.克鲁斯卡尔(Kruskal)算法C.普里姆(Prim)算法D.深度优先搜索(DFS)算法11.利用双向链表作线性表的存储结构的优点是A.便于单向进行插入和删除的操作B.便于双向进行插入和删除的操作C.节省空间D.便于销毁结构释放空间12.在闭散列表中,散列到同一个地址而引起的“堆积”问题是引起的。

学历类《自考》自考专业(计算机信息管理)《数据结构导论》考试试题及答案解析

学历类《自考》自考专业(计算机信息管理)《数据结构导论》考试试题及答案解析

学历类《自考》自考专业(计算机信息管理)《数据结构导论》考试试题及答案解析姓名:_____________ 年级:____________ 学号:______________1、数据表A 中每个元素距其最终位置较近,则最省时间的排序算法是( )A 、堆排序B 、插入排序C 、直接选择排序D 、快速排序正确答案:B答案解析:暂无解析2、如果结点A 有3个兄弟结点,而且B 为A 的双亲,则B 的度为( )A、1B 、3C 、4D 、5正确答案:C答案解析:暂无解析3、在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A ,并且A 的左孩子的平衡因子为-1,右孩子的平衡因子为0,则使其平衡的调整方法为( )A 、LL 型B 、LR 型C 、RL 型D 、RR 型正确答案:B答案解析:暂无解析4、设字符串S1=″ABCDEFG″,S2=″PQRST″,则运算S=CONCAT(SUBSTR(S1,2,LENGTH(S2)),SUBSTR(S1,LENGTH(S2),2))后S 的结果为( )A 、″BCQR″B 、″BCDEF″C 、″BCDEFG″D 、″BCDEFEF″正确答案:D答案解析:暂无解析5、下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是()A、堆排序B、冒泡排序C、直接插入排序D、快速排序正确答案:C答案解析:暂无解析6、设单链表中指针p指向结点A,若要删除A的直接后继,则所需修改指针的操作为()A、p->next=p->next->nextB、p=p->nextC、p=p->next->nextD、p->next=p正确答案:A答案解析:暂无解析7、二叉树的第i(i≥1)层上所拥有的结点个数最多为()A、B、2iC、D、正确答案:C答案解析:暂无解析8、与串的逻辑结构不同的数据结构是()A、线性表B、栈C、队列D、树正确答案:D答案解析:暂无解析9、程序段的时间复杂度为()A、O(1)=B、O(n)C、O(n2D、O(n3)正确答案:B答案解析:暂无解析10、组成数据的基本单位是()A、数据项B、数据类型C、数据元素D、数据变量正确答案:C答案解析:暂无解析11、串的长度是指()A、串中所含不同字母的个数B、串中所含字符的个数C、串中所含不同字符的个数D、串中所含非空格字符的个数正确答案:B答案解析:暂无解析12、有关图中路径的定义,表述正确的是()A、路径是顶点和相邻顶点偶对构成的边所形成的序列B、路径是不同顶点所形成的序列C、路径是不同边所形成的序列D、路径是不同顶点和不同边所形成的集合正确答案:A答案解析:暂无解析13、已知有向图 G=(V ,E),其中 V={V 1,V2,V 3,V4,V 5,V6,V 7},E={} ,则图 G 的拓扑序列是()A、V1,V3,V4,V6,V2,V5,V7B、V1,V3,V2,V6,V4,V5,V7C、V1,V3,V4,V5,V2,V6,V7D、V1,V2,V5,V3,V4,V6,V7正确答案:A答案解析:暂无解析14、树形结构中,度为0的结点称为()A、树根B、叶子C、路径D、二叉树正确答案:B答案解析:暂无解析15、在顺序表中查找第 i 个元素,时间效率最高的算法的时间复杂度为()A、O(1)B、O(√n)C、O(log2n)D、O(n)正确答案:A答案解析:暂无解析16、带表头结点链队列的队头和队尾指针分别为front和rear,则判断队空的条件为()A、front==rearB、front!=NULLC、rear!=NULLD、front==NULL正确答案:A答案解析:暂无解析17、设无向图l D、log2n正确答案:B答案解析:暂无解析20、在栈中进行插入和删除操作的一端称为()A、栈顶B、栈底C、任意位置D、指定位置正确答案:A答案解析:暂无解析21、二路归并排序的平均时间复杂度为 ________。

自学考试02142《数据结构导论》串讲笔记

自学考试02142《数据结构导论》串讲笔记

第一概论1.1 引言两项基本任务:数据表示,数据处理软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。

机外表示------逻辑结构------存储结构处理要求-----基本运算和运算-------算法1.2.1 数据,逻辑结构和运算数据:凡是能够被计算机存储,加工的对象通称为数据数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。

又称元素、顶点、结点、记录。

数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当作一个整体对待。

又称字段或域,是数据不可分割的最小标示单位。

1.2.2 数据的逻辑结构逻辑关系:是指数据元素之间的关联方式,又称“邻接关系”逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。

即数据的组织形式。

四种基本逻辑结构:1 集合:任何两个结点间没有逻辑关系,组织形式松散2 线性结构:结点按逻辑关系依次排列成一条“锁链”3 树形结构:具有分支,层次特性,形态像自然界中的树4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。

注意点:1.逻辑结构与数据元素本身的形式,容无关。

2.逻辑结构与数据元素的相对位置无关3.逻辑结构与所含结点个数无关。

运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。

加工型运算:改变了原逻辑结构的“值”,如结点个数,结点容等。

引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。

引用:查找,读取加工:插入,删除,更新同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。

假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。

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

数据结构导论复习第一章概论1.数据:凡能被计算机存储、加工处理的对象。

2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。

4.逻辑结构需要注意的几点:①逻辑结构与数据元素本身的内容无关②逻辑结构与数据元素相对位置无关③逻辑结构与所有结点的个数无关5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。

6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点?答:集合中任何两个结点之间都没有逻辑关系,组织形式松散;线性结构中结点按逻辑关系依次排列形成一条“锁链”;树形结构具有分支、层次特性,其形态有点像自然界中的树;图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。

7.运算是在逻辑结构层次上对处理功能的抽象8.基本运算的含义?答:假如Γ是S上的一些运算的集合,∆是Γ的一个子集,使得Γ中每一运算都可以“归约”为∆中的一个或多个运算,而∆中任一运算不可归约为别的运算,则称∆中运算为基本运算9.数据结构是指由一个逻辑结构S和S上的一个基本运算集∆构成的整体(S ,∆)。

10.数据结构涉及数据表示和数据处理两个方面11.存储结构的含义和四种基本存储方式的基本思想?答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。

一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。

存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。

12.运算实现与运算的联系与区别?答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。

13.算法的概念和分类?答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被机械地求解。

算法的类型有:运行终止的程序可执行部分、伪语言算法和非形式算法(根据描述算法语言不同)14.算法在给定输入下的计算量的含义和估算的方法?答:算法在给定输入下的计算量是指根据该类问题的特点合理地选择一种或几种操作作为“标准操作”,确定每个算法在给定输入下共执行多少次标准操作,并将此次数规定为该算法在给定输入下的计算量。

估算的方法有:最坏时间复杂度和平均时间复杂度。

15.最坏情况时间复杂性和平均时间复杂性的概念?答:最坏情况时间复杂性也称为最坏时间复杂度,是指以算法在所有输入下的计算量的最大值作为算法的计算量;平均情况时间复杂性也称为平均时间复杂度,是指以算法在所有输入下的计算量的加权平均值作为算法的计算量;16.空间复杂性指的是一个算法除输入数据占存储空间之外所需要的附加存储空间的大小。

17.算法的性质:正确性、易读性、健壮性和高效率。

第二章线性表1.线性结构:是n(n≥0)个结点的有穷序列。

2.线性结构的基本特征:若至少含有一个结点,则除起始结点没有直接前趋外,其他结点有且仅有一个直接前趋;除终端节点没有直接后继外,其他结点有且仅有一个直接后继。

3.线性表的逻辑结构是线性结构4.线性表的六种基本运算的功能?答:⑴初始化INITIATE(L),功能是建立一个空表⑵求表长LENGTH(L),功能是返回线性表L的长度⑶读表元GET(L,i),功能是返回线性表L的第i个结点⑷定位(按值查找)LOCATE(L,X),功能是返回找到的结点集合中序号的最小值,否则返回值为0(说明没有找到)⑸插入INSERT(L,X,i),功能是在线性表L的地i个位置上增加一个值为X的新结点(整个表长+1)⑹删除DELETE(L,i),功能是撤销线性表L的第i个位置结点(整个表长-1)5.顺序表表示法的基本思想、特点答:基本思想是:按照顺序存储方式,顺序表的一个存储结点存储线性表的一个结点的内容,即数据元素,所有存储结点按相应数据元素建的逻辑关系决定的次序依次排列。

特点:逻辑结构中相邻的结点在存储结构中仍相邻。

6.区别顺序表的容量与线性表的表长?答:顺序表的容量是指定义顺序表时的maxsize的值,而线性表的表长是指其中包含的结点个数。

7.顺序表中ai的地址计算:ai的地址=b+(i-1)*l,b是首地址,l是每个结点占的空间7.掌握顺序表上实现插入、删除和定位运算的三个算法P18-208.单链表表示法的基本思想——用指针表示结点间逻辑关系9.单链表的结点形式:答:由数据域和指针域两部分组成;这两部分各自的作用分别是数据域是用于存储线性表的一个数据元素的,指针域是用于存放一个指针的,该指针指向本结点所含数据元素的直接后继所在的结点。

10.头指针和头结点的作用?答:头指针是一个指向链表开始结点的指针,单链表由头指针唯一确定;头结点是我们人为地在链表的开始结点之前附加的一个结点,有了头结点之后,头指针指向头结点,不论链表是否为空,头指针总是非空的,而且头指针的设置使得对链表的第一位置上的操作和在其他位置上的操作一致。

11.单链表上实现插入、删除和定位三种运算的三个算法:P26-2812.插入算法中所包含的指针操作:s=malloc(size);s→data=x;s→next=p→next;p→next=s;删除算法中所包含的指针操作:q=p→next;p→next=q→next;free(q);13.Malloc(size)的作用:①生成一个结点②形式一条指针14.循环链表的组织方法:将单链表中的尾结点的NULL改成指向头结点的指针,就形成了循环链表。

循环链表优点:可以从表中任一结点出发都可以向后扫描整表。

15.双链表的结点形式:刻画双链表结构的对称性的语句:p →prior →next== p →next →prior; 16.顺序表的主要优点和主要缺点:优点:①无需为表示结点间的逻辑关系而增加额外的存储空间 ②可以方便地随机存取表中的任意结点 缺点:①插入和删除运算不方便②分配内存空间采用静态分配方式 17.链表的主要优点:①插入和删除运算方便,只需要修改指针,不需要移动结点 ②分配内存空间采用动态分配方式18.字符串:以字符为数据元素,以线性结构为逻辑结构的数据。

19.串的逻辑结构(是线性结构)和串的特点(是由0个或多个字符组成的有穷序列) 20.串的基本运算的功能:判等EQUAL(S,T)的功能是两个串的长度要相等,而且对应位置的字符都要相同。

21.串的顺序存储方法(紧缩格式和非紧缩格式)和链接存储方法第三章 栈、队列和数组1.栈的基本运算及由此而决定的栈的基本特点 栈是一种只允许在栈顶进行插入、删除的特殊线性表;其基本特点是采用“后进先出”操作; 2.栈的基本运算:①初始化InitStack (S )②进栈Push (S ,X )③退栈Pop (S ) ④ 读栈顶元素TOP (S )⑤判断栈空Empty (S ) 3.顺序栈 “上溢”、“下溢”的概念 “上溢”:顺序栈在进行进栈时,超过了顺序栈的最大的容量 “下溢”:顺序栈在进行退栈时,栈中的元素少于0个元素 4.进栈和退栈运算在顺序栈上的实现算法:P445.顺序栈上的简单算法(初始化,判栈空,取栈顶元素) 6.链栈的结点形式及其描述:Data 用来存放该结点的数据元素Next 用来存放指向下一个数据元素 7.链栈上实现进栈和退栈的算法P468.链栈上的简单算法(初始化,判栈空,取栈顶元素) 9. 队列的基本运算及由此决定的队列的特点队列是一种只允许在对头进行插入在队尾进行删除的特殊线性表;其基本特点是采用“先进先出”操作;10.顺序队上的“假溢出”及其解决方法:顺序队在进行多次入队、出队后,顺序队已经满了,但顺序队中的大部分空间是空的; 解决方法:将顺序队改成循环队 11.循环队队满、队空的条件: 判断循环栈满的条件:((s q →rear+1)%maxsize )==s q →front判断循环栈空的条件:s q →rear== s q →front 12.链队的结点形式及其链队的组织方法:front13.在链队上实现入队、出队的算法P56-57 14.数组的逻辑结构是线性结构的推广 15.二维数组的基本运算是读与写 16.二维数组:k j i n a j i a *]*)1[(]0][0[]][[+++=,其中a[0][0]是首地址,k 是每个数据元素存储单元。

17.稀疏矩阵的三元组表示法:A=(i,j,aij )⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--=000003040000000015000000100030A A=((1,2,3),(1,6,1),(3,1,5),(3,2,-1),(4,5,4),(5,1,-3))第四章 树1.树的定义:是n (n>0)个结点的有穷集合,满足: ①有且仅有一个称为根的结点②其余结点分为m (m ≥0)个互不相交的非空集合T1,T2…… Tm ,这些集合中的每一个都是一棵树,称为根的子树。

2.树形结构的有关术语及其含义 ①根结点②双亲结点和孩子结点 ③兄弟结点和堂兄弟结点 ④子孙结点和祖先结点⑤树的层次、树的高度和树的度3.二叉树的逻辑结构、特点和五种基本形态 (1):二叉树是n (n ≥0)个结点的有穷集合,满足: ①有且仅有一个称为根的结点②其余结点分为2个互不相交的集合T1,T2,T1是左子树,T2是右子树,且T1,T2也都是一棵二叉树。

(2)特点:①二叉树是棵有序树 ②二叉树的度≤2 (3)五种基本形态4.二叉树的基本运算和性质 (1)二叉树的基本运算: ①初始化 INITIATE(BT) ②求根 ROOT(BT)③求双亲PARENT(BT,X)④求左孩子 LCHILD(BT,X) 求右孩子 RCHILD(BT,X) ⑤建树CREATE(X,LBT,RBT)⑥剪枝DELLEFT(BT,X) 和 DELRIGHT(BT,X)(2)二叉树的性质:①第i 层上,最多有12-i 个结点②深度是K ,最多总有12-K 是针对普通二叉树 ③n 0=n 2+1④具有n 个结点,深度⎣⎦1log 2+=nK是针对完全二叉树5.二叉链表的结点形式及其描述,二叉链表中各结点的联系方法及根指针的作用 (1)二叉链表的结点形式是存放该结点的数据元素,lchild 是存放指向该结点的左孩子的指针,rchild 是存放指向该结点的右孩子的指针。

(2)根指针的作用,是用来指明根结点。

6.满二叉树和完全二叉树的概念(1)满二叉树是深度为K 的二叉树的总共结点数为12-K(2)完全二叉树是在满二叉树上少0个或者从最下层的最右边开始少起的二叉树 7.设计二叉树上基于三种遍历的简单算法 8.判定树和哈夫曼树的概念(1)判断树是用来描述分类过程的二叉树(2)哈夫曼树是构造带权路径长度最小的二叉树 9.哈夫曼树的特性:①m 个权值构造的哈夫曼树的结点总数为2m-1②m 个权值构造的哈夫曼树后权值都处在叶子结点上 ③在哈夫曼树中,权值越大离根越近 ④在哈夫曼树中,没有度为1的结点10.将树转化成二叉树时,得到的二叉树的右子树永远为空 11.在n 个结点的二叉链表中,总共有2n 个指针,其中,非空指针数为n-1,空指针数为n+1 12. 三叉链表的好处是方便每个结点找其双亲结点13.讨论树、森林和二叉树的关系目的是想借助二叉树上的运算方法来实现对树的一些运算 14.15.附录:树这章可以出的应用题 1.二叉树 二叉链表图2. 二叉链表图 二叉树 (是上题中的逆操作)3. 二叉树 顺序存储结构图 操作规则:①完全化1 2 3 4 5 6 7 8 9 10 11 12 13 4.顺序存储结构图 二叉树 (是上题中的逆操作)5. 二叉树写出先序、中序和后序遍历先序(DLR):ABDEGCF中序(LDR):DBGEACF后序(LRD):DGEBFCA二叉树(1)先序序列:ABCDEFGHIJ中序序列:CDBFEAIHGJ(2)后序序列:DECBHGFA中序序列:BDCEAGFH7.树孩子链表表示法9.树双亲表示法10.树 二叉树11.森林 二叉树12.二叉树 森林(b)(c)13.哈夫曼树的构造给定权值给7,18,3,32,5,26,12,8,构造哈夫曼树并计算其带权路径长度带权路径长度=23222631831248474543⨯+⨯+⨯+⨯+⨯+⨯+⨯+⨯=298第五章 图1.图状结构的定义并熟悉有关术语(1)图的定义:图由两个集合构成,记作G=(V ,E),其中V 是顶点的有穷非空集合,E 是边的集合,并且边是顶点集合的无序对或有序对集合。

相关文档
最新文档