自考02142数据结构导论密训高频考点重点汇总.pdf
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《自考02142数据结构导论密训高频考点重点汇总.pdf》由用户(雁南飞1234)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考考点精华汇总
- 资源描述:
-
1、1 1/1515第一章 概论第一章 概论知识点名称知识点名称内容内容引言引言1.数据结构指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该组数据上的一组操作。2.算法+数据结构=程序数据、数据元素和数据项数据、数据元素和数据项1.数据:所有被计算机存储、处理的对象。2.数据元素:数据的基本单位,是运算的基本单位。常常又简称为元素。3.数据项是数据的不可分割的最小标识单位。在数据库中数据项又称为字段或域。4.从宏观上看,数据、数据元素和数据项实际上反映了数据组织的三个层次,数据可由若干个数据元素组成,而数据元素又可由若干个数据项组成。5.数据结构是相互之
2、间存在一种或多种特定关系的数据元素的集合。它包括数据的逻辑结构、数据的存储结构和数据的基本运算。数据的逻辑结构数据的逻辑结构1.数据的逻辑结构:与数据元素本身的形式、内容、相对位置、个数无关。2.集合:任意两个结点之间都没有邻接关系,组织形式松散。3.线性结构:结点按逻辑关系依次排列形成一条“链”,结点之间一个一个依次相邻接。4.树形结构:具有分支、层次特性,其形态像自然界中的树,上层的结点可以和下层多个结点相邻接,但下层结点只能和上层的一个结点相邻接。5.图结构:最复杂,其中任何两个结点都可以相邻接。数据的存储结构数据的存储结构1.数据的逻辑结构在计算机中的实现称为数据的存储结构。2.顺序存
3、储方式:指所有存储结点存放在一个连续的存储区里。利用结点在存储器中的相对位置来表示数据元素之间的逻辑关系。3.链式存储方式:指每个存储结点除了含有一个数据元素外,还包含指针,每个指针指向一个与本结点有逻辑关系的结点,用指针表示数据元素之间的逻辑关系。4.除了上述两种存储方式之外,还有索引存储方式和散列存储方式。但主要的存储方式是:顺序存储方式和链式存储方式。运算运算1.运算是指在某种逻辑结构上施加的操作,即对逻辑结构的加工。2.运算包括:建立、查找、读取、插入和删除等。3.线性表、栈和队列中的元素具有相同的逻辑结构(即线性结构),但有不同的运算集,它们是不同的数据结构。算法分析算法分析1.正确
4、性:能正确地实现预定的功能,满足具体问题的需要。2.易读性:易于阅读、理解和交流,便于调试、修改和扩充。3.健壮性:即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果。4.时空性:指该算法的时间性能(或时间效率)和空间性能(或空间效率),前者是算法包含的计算量,后者是算法需要的存储量。时间复杂度时间复杂度1.常见的时间复杂度的比较:O(1)O(log2n)O(n)O(n2)O(n3)O(n4)next。某带有头结点的单链表的头指针为head,判断该单链表为非空的条件是 head-next!=NULL。线性表的基线性表的基本运算在单本运算在单链表上的实链表上的实现现1
5、.初始化(1)假设单链表的类型定义如下:typedefstruct node DataType data;3 3/1515struct node *next;node ,*LinkList;算法 InitiateLinkList()实现单链表的初始化:LinkListInitiateLinkList( ) /建立一个空的单链表LinkList head; /头指针head=malloc(sizeof(node); /动态构建一个结点,并定义为头结点head-next=NULL;return head;/空表由一个头指针 head 和一个头结点组成。head 指向新创建的结点,即头结点。一个空单
6、链表仅有一个头结点,它的指针域为 NULL。(2)在带头结点的单链表 L 中,第一个数据元素结点的指针为 L-next。(3)设有一个单链表,若结点的指针域为 next,则指针 p 所指的结点为最后一个结点的条件是p-next=NULL。工作指针 p-next 为 NULL 时,说明已经走到了表的尾部,这时已完成对所有结点的访问。2.插入 p 指向的新结点的操作(1)设 r 指向单链表的最后一个结点,要在最一个结点之后插入 s 所指的结点,需执行的语句序列是r-next=s;r=s;r-next=NULL。(2)将一个由指针 q 指向的结点插在单链表中由指针 p 所指向的结点之后的操作是:q-
7、next=p-next;p-next=q;。3.删除*p 结点的操作在一个单链表中,已知指针 q 指向指针 p 所指结点的前驱结点,则删除*p 结点的操作语句是q-next=p-next。循环链表循环链表1.在单链表中,如果让最后一个结点的指针域指向第一个结点可以构成循环链表。(1)只有头指针 head1)判断 P 所指结点为尾结点的条件:p-next=head2)判断指针 P 所指结点为首结点的条件:p=rear-next-next3)判断链表是否为空的条件:head-next=head4 4/1515(2)有头指针 head 和尾指针 rear说明:rear-next 指向头结点 head
8、。在 带有 头结 点 的循 环 链表 中, 尾 指针 为 rear , 判断 指针 P 所 指结 点为 首 结点 的 条件是p=rear-next-next。(3)只有尾指针 rear1)删除表首结点的操作可表示为:p=rear-next-next;rear-next-next=p-next;free(p);2) 已知尾指针的单向循环链表中, 在第一个结点后面插入一个新结点, 该算法的时间复杂度为 O (1) 。双向循环链双向循环链表表1.每个结点有两个指针,next 指针指向直接后继结点;prior 指针指向直接前驱结点。2.带头结点的双向循环链表 L 为空的条件:(L-next=L)&(L
9、-prior=L)。3.删除(1)设 p 指向待删结点,删除*p 的操作:p-prior-next=p-next;/语句p-next-prior=p-prior;/语句free(p);(2)这两个语句的执行顺序可以颠倒。4.插入在 p 所指结点的后面插入一个新结点*t 的操作:t-prior=p;t-next=p-next;5 5/1515p-next-prior=t;p-next=t;顺序实现与顺序实现与链接实现的链接实现的比较比较顺序表时间复杂度单链表时间复杂度按位置查找运算O(1)O(n)定位运算O(n)O(n)插入、删除运算O(n)O(n)第三章第三章 栈、队列和数组栈、队列和数组知识
10、点名称知识点名称内容内容栈、队列和栈、队列和数组数组1.栈和队列可看作是特殊的线性表。它们是运算受限的线性表。栈和队列也同样有两种存储结构(顺序存储结构和链式存储结构)。2.栈和队列可看作是特殊的线性表。(1)函数的嵌套调用和程序递归的处理都是用栈来实现的。(2)操作系统中进程调度、网络管理中的打印服务等都是用队列来实现的。栈的基本概栈的基本概念念1.栈:这种线性表上的插入和删除运算限定在表的某一端进行。允许进行插入和删除的一端称为栈顶,另一端称为栈底。不含任何数据元素的栈称为空栈。2.栈的修改原则:后进先出,栈又称为后进先出线性表,简称后进先出表。3.栈的基本运算:(1)初始化 InitSt
11、ack(S):构造一个空栈 S;(2)判栈空 EmptyStack(S):若栈 S 为空栈,则结果为 1,否则结果为 0;(3)进栈 Push(S,x):将元素 x 插入栈 S 中,使 x 成为栈 S 的栈顶元素;(4)出栈 Pop(S):删除栈顶元素;(5)取栈顶 GetTop(S):返回栈顶元素。栈的顺序实栈的顺序实现现1.当空栈,栈顶下标值 top=0,如果此时做出栈运算,则产生“下溢”。当栈中的数据元素已经填满了,如果再进行进桟操作,会发生“上溢”。2.初始化IntInitStack(SeqStk *stk)stk-top=0;return1;3.判栈空IntEmptyStack(Se
12、qStk *stk)/若栈为空,则返回值 1,否则返回值 0if(stk-top=0)return 1;else return 0;6 6/15154.进栈Int Push(SeqStk *stk,DataType x)/若栈未满,元素 x 进栈 stk 中,否则提示出错信息if(stk-top=maxsize-1)/判断找是否满error(“栈已满”);return 0;elsestk-top+;/栈未满,top 值加 1stk-datastk-top=x;/元素 x 进桟return 1;5.出栈Int PopSeqStk *stk)if(EmptyStack(stk)/判断是否下溢(栈空
13、)error(“下溢”);return 0;else/未下溢,栈顶元素出栈stk-top-;/top 值减 1return 1;也可以理解为:原栈顶的下一个结点成为新的栈顶,即 top=top-next;6.取栈顶元素DataType GetTop(SeqStk*stk)/取栈顶数据元素,栈顶数据元素逋过参数返回if(EmptyStack(stk)return NULLData;/栈空,返回 NULLDataelsereturn stk-datastk-top;/返回栈顶数据元素栈的链接实栈的链接实现现1.栈的链接实现称为链栈,链栈可以用带头结点的单链表来实现。LS 指向链表的头结点,首结点是
14、栈顶结点,LS-next 指向栈顶结点,尾结点为栈底结点。2.出栈操作始终是栈顶结点出栈,即删除头结点之后的结点,如下图:7 7/1515原栈顶的下一个结点成为新的栈顶,即 top=top-next;3.链栈由于采用了链表的方式作为存储方式,各结点通过链域的连接组成栈,由于每个结点空间都是动态分配产生,链栈不用预先考虑容量的大小。4.入栈时,使用 malloc 申请空间后,用指针相连接,所以节点个数没有限制;但是出栈时,如果栈中的元素个数为 0,则不能继续出栈,所以需要判断当前栈是否为空。综上,链表不需要判满,只需要判定是否为空即可。5.链栈 LS 中,Ls 一next 指向栈顶结点,则新结点
15、 * P 入栈的操作为:P 一next=LS 一next;和 LS-next=p;。递归与栈递归与栈1.将递归形式描述的算法改写为功能等价的非递归形式描述的算法,通常应设置的输助结构是栈。队列的基本队列的基本概念概念1.队列是一种先进先出的线性表,新加入的数据元素插在队列尾端,出队列的数据元素在队列首部被删除。队列的顺序队列的顺序实现实现1.循环队列:为了避免元素的移动,将存储队列元素的一维数组首尾相接,形成一个环状。2.入队列操作语句:SQ.rear=(SQ.rear+1)%maxsize;SQ.dataSQ.rear=x;3.出队列赋值语句:SQ.fronts(SQ.front+1)%ma
16、xsize;4.循环队列满:(CQ.rear+1)%maxsize=CQ.front)成立。5.队列空条件:(CQ.rear=CQ.front)成立。6.数组 Qn表示一个循环队列,设 f 为队列中第一个元素的位置,r 为队列中实际队尾的位置加 1,则队列中元素个数的公式:(r-f+n)%n队列的链接队列的链接实现实现1.由于链接实现需要动态申请空间,故链队列在一定范围内不会出现队列满的情况。2.当(LQ.front=LQ.rear)成立时,队列中无数据元素,此时队列为空。带头结点的链队列中,队列头和队列尾指针分别为 front 和 rear,则判断队列空的条件为 front=rear。3.在
17、实现队列的链表结构中,仅设置尾指针的单循环链表的时间复杂度最优。数组的存储数组的存储结构结构1.数组元素的存储位置是下标的线性函数:对于二维数组 amn,如果每个元素占 k 个存储单元,以行为主序为例,讨论数组元素 aij位置与下标的关系。2.由于下标从 0 开始,元素 aij之前已经有 i 行元素,每行有 n 个元素,在第 i 行,有 j+1 个元素,总共有 n*i+j+1 个元素, 第一个元素与 aij相差 n*i+j+11 个位置, 故 aij的位置为: loci, j=loc0,0+(n*i+j)*k。矩阵的压缩矩阵的压缩存储存储1.为了节省存储空间,对这类矩阵采用多个值相同的元素只分
18、配一个存储空间,零元素不存储的策略,这一方法称为矩阵的压缩存储。2.特殊矩阵8 8/1515(1)对称矩阵。一个 n 阶方阵 A 中的元素满足下述条件:aij=aji0i,jn-1。假设以一维数组 Mn(n+1)/2作为 n 阶对称矩阵 A 的存储结构。(2)三角矩阵。以主对角线为界的上(下)半部分是一个固定的值 c 或零。1)为存储 n 阶的三角矩阵,采用数组 Mn(n+1)/2,把矩阵中上(下)三角部分的 n(n+1)/2 个元素存储在数组 M0Mn(n+1)/2-1的 n(n+1)/2 个单元中,其中 c 若非 0,则存放到数组的Mn(n+1)/2中。2)上三角矩阵中元素 aij在数组
19、M 中的位置对应关系:3.稀疏矩阵:非零元素个数很少的矩阵。矩阵压缩存储主要是为了节省存储空间。三元组表示法:用三个项来表示稀疏矩阵中的非零元素 aij,即(i,j,aij),其中 i 表示行序号,j 表示列序号,aij是非零元素的值,通常称为三元组。第四章第四章 树和二叉树树和二叉树知识点名称知识点名称内容内容树的概念树的概念1.树是 n(n 多 0)个结点的有限集合,一棵树满足以下两个条件:(1)当 n=0 时,称为空树;(2)当 n0 时,有且仅有一个称为根的结点,除根结点外,真余结点分 m(m0)个互不相交的非空集合 T1,T2,Tm,这些集合中的每一个都是一棵树,称为根的子树。树的相
20、关术树的相关术语语1.结点的度:树上任一结点所拥有的子树的数目称为该结点的度。2.叶子:度为 0 的结点称为叶子或终端结点。3.树的度:一棵树中所有结点的度的最大值称为该树的度。一个结点的子树的根称为该结点的孩子(或称子结点)。相应地该结点称为孩子的双亲(也称父结点) 。父结点相同的结点互称为兄弟。4.结点的层次:从根开始算起,根的层次为 1,其余结点的层次为其双亲的层次加 1。5.树的高度:一棵树中所有结点层次数的最大值称为该树的高度或深度。6.对于任一个树都有:结点数=分支数+1。二叉树的基二叉树的基本概念本概念1.二叉树是 n(n0)个元素的有限集合,该集合或者为空,或者由一个根及两棵互
21、不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树。2.左右子树次序不可换,都可为空。二叉树的性二叉树的性1.满二叉树:深度为 k(k1)且有 2k-1 个结点的二叉树称为满二叉树。由性质 2 知,满二叉树上的9 9/1515质质结点数已达到了二叉树可以容纳的最大值。2.完全二叉树:如果对满二叉树按从上到下,从左到右的顺序编号,并在最下一层删去部分结点(删后最后一层仍有结点),如果删除的这些结点的编号是连续的且删除的结点中含有最大编号的结点,那么这棵二叉树就是完全二叉树。3.具体性质:(1)性质 1:二叉树的第 i(i1)层上至多有 2i-1个结点。(2)性质 2:深度为 h(h1)的
展开阅读全文