




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 绪 论1、数据结构的主要研究内容数据的逻辑结构-数据关系之间的逻辑关系 数据的存储结构-数据的逻辑结构在计算机中的表示 2、数据逻辑结构的种类:集合、线性表、树和图的性质和特点。v 集合结构中的元素是各自独立的,元素之间没有联系v 线性结构中的元素是一个接一个串联起来的,它有一个头元素和一个尾元素,其余为中间元素;每个中间元素既有前驱元素,又有后继元素v 在树结构中,树根结点只有后继结点,而没有前驱结点;除树根结点外,每个结点都有唯一一个前驱结点,又称为是父结点或双亲结点v 在图结构中,每个结点或称顶点都可以有任意多个前驱结点和任意多个后继结点。 v 树结构是图结构的特例,线性结构是树结构的特例。为了区别于线性结构,时常把树结构和图结构称为非线性结构。3、数据结构的二元组定义,能根据给出的二元组来判断数据的逻辑结构类型。v 集合结构中的元素集合K和二元关系R分别为: K=A,B,C,D,E,F,G R= v 线性结构中的元素集合K和二元关系R分别为: K=A,B,C,D,E,F,G R=,v 树结构中的元素集合K和二元关系R分别为: K=A,B,C,D,E,F,G R=,v 图结构中的元素集合K和二元关系R分别为: K=A,B,C,D,E,F,G R=,4、了解数据的几种存储结构(物理结构)及它们各自的性质和特点。(1)顺序的方法: 将逻辑上相邻的元素存储到物理上相邻的存储位置. 常用于线性的数据结构.(2)链式结构:给结点附加一个指针字段, 指出其后继节点的位置, 即存放结点的存储单元分为两部分:数据项指针项(3)散列(hashing) 结构:散列的方法是用结点的关键字值直接计算出结点的存储地址。这个取值函数也称为散列函数。 5、数据的逻辑结构、存储结构和总的数据结构之间的关系v 逻辑结构相同,但存储结构不同,则认为是不同的数据结构。 如顺序表和链表具有相同的逻辑结构,但存储结构分别为顺序结构和链表结构6、算法的设计要求有那些,会结合实际的语言设计来说明这些要求1)正确性:对于合法的输入产生符合要求的输出;2)可读性:算法应该易读、便于交流, 这也是保证算法正确性的前提;添加注释也是一种增加可读性的办法;3)健壮性:当输入非法时, 算法还能做出适当的反应而不会崩溃, 如输出错误信息;算法中应该考虑适当的错误处理;4)效率高且内存消耗小:效率高指运行时间短。存储指算法执行过程中所需的最大存储空间。7、了解时间复杂度的概念、时间复杂度的度量、时间复杂度的类型,能对实际的程序分析它的时间复杂度。算法的时间复杂度是一个算法运行时间的相对量度。把算法中包含简单操作次数的多少叫做该算法的时间复杂度,或者叫做时间复杂性,用它来衡量一个算法的运行时间性能或称计算性能v 平均复杂度(The Average Case):所有可能输入.数据集的期望值v 最坏情况复杂度 (The Worst Case):估算最坏情况下时间复杂度的一个上界这也是通常所指的复杂度v 最好复杂度 (The Best Case):在最理想输入情况下的时间复杂度。第二章 线性表1、了解并掌握线性表的定义及性质线性表是线性结构的一种表现形式,即是具有相同属性数据元素的一个有限序列,序列中的元素是一个接一个在逻辑上是有序的,序列中元素的个数就是该线性表的长度.v 存在唯一的一个被称作“第一个”的数据元素v 存在唯一的一个被称作“最后一个”的数据元素v 除起点元素之外,集合中的每个数据元素均只有一个前驱v 除终点元素之外,集合中每个数据元素均只有一个后继v 起点元素只有后继没有前驱,终点元素只有前驱没有后继 v 对于线性表中的数据元素ai-1和ai来说,ai-1是ai的直接前驱,ai是ai-1的直接后继。v 所有数据元素ai在同一个线性表中必须是相同的数据类型。2、熟悉顺序线性表(顺序存储的线性表)的存储方式及其表单元(简单数据类型和记录数据类型)的定位和计算。 线性表的顺序存储指的是用一组地址连续的存储单元依次存储线性表的数据元素。线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的,即前驱元素一定存储在后继元素的前面。3、熟悉顺序线性表的插入、删除和查找的算法思想和程序4、了解线性表链接存储的结构和特点v 假设数据结构中的每一个数据结点对应于一个存储单元,这种存储单元称为存储结点,简称结点。v 在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域(或称为信息域);另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点,从而可以表示数据元素之间的逻辑关系。v 长度可以任意扩充,存储效率较高;v 物理存储可以是不连续的;v 数据元素的逻辑次序可以与其存储的物理次序不一致。v 插入、删除运算灵活方便,不需移动结点,只要改变结点中指针域的值即可5、了解单链表、双向链表和循环链表的结构和特点通过每个结点的指针域将n个结点按其逻辑顺序链接在一起的结点序列我们就称为链表。如果这一链表中每个结点只有一个指针域,则称该链表为线性链表或单链表,否则则称为双向链表。双向链表是指线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其直接前驱;另一个称为右指针,用以指向其直接后继。循环链表。循环链表和单链表的差别仅在于链表中最后一个结点的指针域不为“NULL”,而是指向头一个结点,成为一个由链指针链结的环。循环链表的特点:只要知道表中任何一个结点的地址,就能查询到表中的任何一个结点。 6、了解单链表的结点的类型定义在程序中,L为单链表的头指针,它指向表中第一个结点。若 L 为“空”(L = NULL),则所表示的线性表为“空”表,其长度为“零”。除了线性表第一个数据元素作为该链表的头结点外,在某些线性链表存储结构中,还可在单链表第一个结点之前附加一个同结构结点,称为附加头结点。头结点数据域可以不存储任何信息,也可以存储如线性表的长度等类的附加信息;头结点指针域存储指向第一个结点的指针(即第一个元素的存储位置)。那么,指向头结点的指针就是头指针。当头结点的指针域为“空”时,单链表为空链表8、熟悉单链表中结点的定位、插入、删除、查询的算法思想和操作程序9、了解线性表的顺序与链式存储各自的优点、不足与它们适用场合。若线性表的操作主要是查找和读取时,采用顺序存储结构为宜;若线性表的操作主要是插入和删除时,采用链式存储结构为宜。 10、了解线性表的顺序与链式存储在不同操作场合下的时间复杂度指标顺序表是随机存储结构,表中任一数据元素都可以通过计算直接得到地址进行存取,时间复杂度为O(1)。在顺序表中进行插入和删除数据元素时,平均要移动近一半的元素,尤其是当每个数据元素包含的信息量较大时,移动元素所花费的时间就相当可观。动态链表是顺序存储结构,表中的任一结点都需要从头指针起顺链扫描才能取得,时间复杂度为O(n)(n为表长)。但在动态链表中进行插入和删除结点时,不需要移动结点,只需要修改指针。第四章 栈和队列1、了解栈的定义及性质栈(stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。2、能给出在特定要求下的进出栈序列以及判断某些出栈序列出现的可能性3、了解栈的顺序存储结构实现,栈顶指针的设置4、了解栈的链接存储结构的实现、栈顶指针的更改5、熟悉栈在顺序和链接存储结构下的进栈、出栈和读取栈顶元素的操作程序6、了解递归算法的特点及递归算法的中止条件,会结合具体程序来分析递归程序的合理性7、了解队列的定义和它的顺序存储结构v 队列(queue)简称队,它也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。v 我们把进行插入的一端称作队尾(rear),进行删除的一端称作队首(front)。向队列中插入新元素称为进队或入队,新元素进队后就成为新的队尾元素;从队列中删除元素称为离队或出队,元素离队后,其后继元素就成为队首元素。v 由于队列的插入和删除操作分别是在各自的一端进行的,每个元素必然按照进入的次序离队,所以又把队列称为先进先出表(first in first out, 简称FIFO)。8、了解队列特别是循环队列情况下,队列头指针和尾指针的设置9、了解队列出现“假溢出”现象的原因及解决办法:循环队列的实现(循环头指针和尾指针的计算、循环(和普通)队列长度的计算以及循环队列为空和满的判断方法)第五章 树和二叉树1、了解树的定义和树的基本术语:树和结点的度、分支结点和叶子结点、父母结点和孩子结点、结点的层数和树的深度、有序树和无序树等在树形表示法中,结点之间的关系是通过连线表示的,虽然每条连线上都不带有箭头(即方向),但它并不是无向的,而是有向的,其方向隐含为从上向下或从左向右,即连线的上方或左边结点是下方或右边结点的前驱,下方或右边结点是上方或左边结点的后继。 v 结点的度:树中每个结点具有的非空子树数或者说后继结点数被定义为该结点的度(degree)。v 树的度:一棵树上所有结点的度的最大值就是这棵树的度。 v 叶子结点:度为零的结点称叶子结点或终端结点。v 分支结点:度非零的结点称为分支结点或称为非终端结点。v 孩子结点(child) :某结点子树的根或者说某个结点的后继被称为该结点的孩子结点。v 双亲结点(parent):一个结点是它的那些子树的根的双亲结点。v 兄弟结点(sibling):同一个双亲的孩子之间互为兄弟。v 堂兄弟结点(cousins):其双亲在同一层但不同的结点互为堂兄弟。v 子孙结点:每个结点的所有子树中的结点被称为该结点的子孙结点v 祖先结点:从整个(子)树的根结点到达该结点的路径上经过的所有分支结点v 结点层次:从根结点开始,根结点为第1层,根结点的孩子为第2层,依此类推 1 A .第1层 2 B 3 C 4 D . 第2层 5 E 6 F G 7 . 第3层树的深度:树中结点的最大层次。有序树:结点的子树从左到右有序安排。也即树T中各子树T1,T2,Tn的相对次序是有意义的。在有序树中,改变了子树的相对次序就变成了另一棵树。 无序树:结点的子树顺序任意。2、熟悉树的性质,并能根据这些性质进行相关推理和计算v 性质1: 树中的结点数等于所有结点的度数加1。 证明:根据定义:除根结点外,每个结点有一个分支指向。树的总分支数为:v 性质2: 度为k的树中第i层上至多有ki-1个结点(i1)。 用数学归纳法证明: 对于 i=1, ki-1 =k0 =1 命题成立。 假设第i-1层(i1)命题成立,该层上有ki-2 个结点。 对于第i层,最多结点数为:ki-2.k= ki-1 命题得证。 v 性质3 深度为h的k叉树至多有 个结点。 证明:利用性质 2来证明,k 叉树的最大结点数为每一层最大结点数之和,则有: 当一棵k叉树上的结点数等于 时,则称该树为满k叉树。v 性质4:具有n个结点的k叉树的最小深度为: logk(n(k-1)+1) 分析:在结点数相同的 k叉树中,每一层结点都满,或除最后一层外其余层都满的树,其深度为最小。 证明:设k叉树的最小深度为h,则: 前h-1层满的 k叉树结点数 n h层都满的k叉树结点数,因此有: 上式可变换为: kh-1 n (k-1)+1 kh以k为底取对数可得: h-1 logk( n(k-1)+1) h 即: logk( n(k-1)+1) h 0)结点的完全二叉树的深度为log2(n+1)或log2n+1。 此性质可以从树的相应性质中直接导出,也可以进行如下证明。 证明:设所求完全二叉树的深度为h,由完全二叉树的定义可知,它的前h-1层都是满的,最后一层可以满,也可以不满,由此得到的如下不等式 2h-1-1n2h-1 可变换为: 2h-1n+12h 取对数后得: h-1log2(n+1)h 即: log2(n+1)hlog2(n+1)+1 因h只能取整数,所以: h= log2(n+1) 完全二叉树的深度h和结点数n的关系,还可表示为: 2h-1n2h 取对数后得: h-1log2nh 即: log2nhlog2n+1 因h只能取整数,所以: h= log2n+14、熟悉满二叉树、完全二叉树以及平衡二叉树等几种特殊的二叉树的性质、特点,并能根据这些性质进行相关的推理和计算满二叉树:叉树每层的结点数达到最大值。 第i层有2i-1个结点;全部分支结点度为2。完全二叉树: 除最后一层外,其余层均满;最后层或为满,或缺少右边若干连续结点。 特点: v 除最后一层,第 i层有2i-1个结点; v 叶子只可能出现在最后两层;v 结点右子树深度为i时,左子树深度为i或i+1。理想平衡二叉树:在一棵二叉树中,若除最后一层外,其余层都是满的,而最后一层上的结点可以任意分布,则称此树为理想平衡二叉树,简称理想平衡树或理想二叉树。v 显然,理想平衡树包含满二叉树和完全二叉树。完全二叉树中深度h和结点数n之间的关系,在理想平衡树中同样成立,5、了解二叉树的链接存储结构根据二叉树的特性,任何一个结点最多有左、右两棵子树,所以每个结点至少设有三个域:数据域和左、右指针域。其结点结构为:Leftdataright其中data表示值域,用于存储对应的数据元素,left和right分别表示左指针域和右指针域,用以分别存储左孩子和右孩子结点的存贮位置(即指针)v 链接存储的另一种方法是:在上面的结点结构中再增加一个parent指针域,用来指向其双亲结点。这种存储结构既便于查找孩子结点,也便于查找双亲结点,当然也带来存储空间的相应增加。lchilddataparentrchild6、熟悉二叉树的4种遍历方法,能按任何一种遍历方法来写出给定树的遍历序列(1) 先序遍历:若二叉树为空,则空操作;否则 访问根结点; 先序遍历左子树; 先访问左子树根节点;再遍历左子树根节点的左子树,再遍历左子树根节点的右子树;直至遍历完所有左子树的节点 先序遍历右子树。 先访问右子树根节点;再遍历右子树根节点的左子树,再遍历右子树根节点的右子树;直至遍历完所有右子树的节点(2) 中序遍历: 若二叉树为空,则空操作;否则 中序遍历左子树; (遍历的过程与先根级的递归遍历类似) 访问根结点; 中序遍历右子树 (遍历过程与先根级的递归遍历相同)(3) 后序遍历:若二叉树为空,则空操作;否则 后序遍历左子树; 后序遍历右子树。 访问根结点;(4)按层遍历二叉树: 访问根结点;遍历左子树根结点;遍历右子树根结点。6、熟悉树的遍历序列与树结构之间的关系,并能由特定的遍历序列来恢复树结构和写出另外的遍历序列7、熟悉树与二叉树的共性和差异之处8、熟悉树的几种遍历算法9、能根据树的定义(包括结点类型的定义)编程实现树的一些基本运算第六章 二叉树的应用1、了解二叉搜索树的定义,性质并能根据定义由给定序列构造二叉搜索树v 二叉搜索树(Binany Searching Tree)又称做二叉排序树(Binary Sorting Tree),它或者是一棵空树,或者是一棵具有如下特性的非空二叉树。 (1) 若它的左子树非空,则左子树上所有结点的关键字均小于树根结点的关键字; (2) 若它的右子树非空,则右子树上所有结点的关键字均大于树根结点的关键字; (3) 左、右子树本身又各是一棵二叉搜索树。 在一个二叉搜索树中,当每个结点的元素类型为简单类型时,则结点的关键字就为该结点的值;当结点的元素类型为记录类型时,则结点的关键字为该结点的某一个域的值。v 由二叉搜索树的定义可知,在一棵非空的二叉搜索树中,其结点的关键字是按照左子树、根和右子树有序的,所以对它进行中序遍历得到的结点序列必然是一个有序序列。2、了解二叉搜索树应用于查找时的特性及指标v 在二叉搜索树上进行查找的过程中,给定值item同树中结点比较的次数最少为一次(即树根结点就是待查的结点),最多为树的深度,所以平均查找次数要小于等于树的深度。v 若二叉搜索树是一棵理想平衡树或接近理想平衡树,则进行查找的时间复杂度为O(log2n),v 若为一棵单支树(这是最极端和最差的情况),则其时间复杂度为O(n),v 一般情况而言,其时间复杂度可大致可看做为O(log2n)。 由此可知,在二叉搜索树上查找比在集合或线性表上进行顺序查找的时间复杂度O(n)要小得多,这正是构造二叉搜索树的优势所在。二叉搜索树查找的递归算法的空间复杂度平均情况为O(log2n),最差情况为O(n),非递归算法的空间复杂度为O(1)。3、了解堆的定义和性质堆(Heap)分为小根堆和大根堆两种,对于一个小根堆,它是具有如下特性的一棵完全二叉树。(1) 若树根结点存在左孩子,则树根结点的值小于等于左孩子结点的值;(2) 若树根结点存在右孩子,则树根结点的值小于等于右孩子结点的值;(3) 以左、右孩子为根的子树又同样各是一个堆。 大根堆的定义与上述类似,只要把小于等于改为大于等于就得到了。v 若一棵完全二叉树是堆,则该树中以每个结点为根的子树也都是一个堆。v 堆顶结点具有最小值(对应于小根堆)或最大值( 对应于大根堆)。4、能采用给定的数据序列来生成一个堆(大根堆或小根堆)5、了解树的带权路径,以及哈夫曼树(最优二叉树)的概念和性质(1) 路径和路径长度若在一棵树中存在着一个结点序列k1,k2,kj,使得ki是ki+1的双亲(1ij),则称此结点序列是从k1到kj的路径。也就是说,在二叉树中,一个结点到另一个结点之间的分支构成这两个结点之间的路径。因树中每个结点只有一个双亲结点,所以它也是这两个结点之间的惟一路径。从k1到kj所经过的分支数称为这两点之间的路径长度,它等于路径上的结点数减1。 (2) 结点的权和带权路径长度 在许多应用中,常常将树中的结点赋予一个有着某种意义的实数,我们称此实数为该结点的权。结点的带权路径长度规定为从树根结点到该结点之间的路径长度与该结点上权的乘积。(3) 树的带权路径长度 树的带权路径长度定义为树中所有叶子结点的带权路径长度之和,通常记为: WPL= 其中n表示叶子结点的数目,wi和li分别表示叶子结点ki的权值和树根结点到ki之间的路径长度。v 哈夫曼(Huffman)树又称作最优二叉树。它是n个带权叶子结点构成的所有二叉树中,带权路径长度WPL最小的二叉树。 6、能根据给定的权值集合和结点集合构成具有n个结点的哈夫曼树(1) 根据与n个权值w1,w2,wn对应的n个结点构成具有n棵二叉树的森林F=T1,T2,Tn,其中每棵二叉树Ti(1in)都只有一个权值为wi的根结点,其左、右子树均为空; (2) 在森林F中选出两棵根结点的权值最小的树作为一棵新树的左、右子树,且置新树的根结点的权值为其左、右子树上根结点的权值之和; (3) 从F中删除构成新树的那两棵树,同时把新树加入F中; (4) 重复(2)和(3)步,直到F中只含有一棵树为止,此树便是哈夫曼树第七章 图1、了解图的定义以及基本性质v 图中的每个顶点,都允许有任意个前驱和后继,即对每个顶点的前驱和后继个数均不加以限制v 对于一个图G,若E是有序对的集合,则每个有序对对应图形中的一条有向边,若E是无序对的集合,则每个无序对对应图形中的一条无向边,所以可把E看做为边的集合。这样图的二元组定义可叙述为: 图由顶点集(vertex set)和边集(edge set)所组成。针对图G,顶点集和边集可分别记为V(G)和E(G)。若顶点集为空,则边集必然为空,若顶点集非空,则边集可空可不空,当边集为空时,图G中的顶点均为孤立顶点。 2、了解图的邻接矩阵、邻接表、逆邻接表和十字邻接表的定义及性质邻接矩阵(adjacency matrix)是表示图形中顶点之间相邻关系的矩阵。设G=(V,E)是具有n个顶点的图,顶点序号依次为0,1,2,n-1,则G的邻接矩阵是具有如下定义的n阶方阵。 1, 对于无向图,(vi,vj)或(vj, vi)E(G); Ai,j= 对于有向图,E(G) 0, 对应边不存在于E(G)中v 从邻接矩阵中可查两个结点的之间是否存在通路,若两个结点的坐标的交叉其值不为零并不是一个很大的值的话,则有通路,否则没有通路。若其值大于1则为该通路的权值。v 无向图的邻接矩阵是对称的,有向图的邻接矩阵可能是不对称的。v 在有向图中, 统计第 i 行 中1的个数可得顶点 i 的出度,统计第 j 列中 1 的个数可得顶点 j 的入度。v 在无向图中, 统计第 i 行 (列)中 1 的个数可得顶点i 的度。v 图的邻接矩阵的存储需要占用n n个整数存储位置,所以其空间复杂度为O(n2)。v 图的邻接矩阵存储结构用于表示稠密图能够充分利用存储空间,但若用于表示稀疏图,则将使邻接矩阵变为稀疏矩阵,从而造成存储空间的很大浪费。v 图的邻接矩阵表示,需要使用一个二维数组存储顶点之间相邻的关系,为了存储图中n个顶点元素的信息,通常还需要使用一个一维数组,用数组中下标为i的元素存储顶点vi的信息。邻接表(adjacency list)是对图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村信息基础设施建设-洞察及研究
- 政治稳定与危机管理-洞察及研究
- 互动叙事模式构建-洞察及研究
- 数字时代资产评估模式的创新和适应性转型
- 专四专八考试真题及答案
- 咨询招聘考试题库及答案
- 2025年互联网电商行业可持续发展策略研究报告
- 2025年物联网政策在物联网产业人才培养与引进可行性研究报告
- 能源产业政策效果评估2025年可行性分析报告
- 2025年虚拟现实影视市场适应能力评估可行性分析报告
- 包装材质基础知识培训课件
- 2025至2030中国生产监控行业项目调研及市场前景预测评估报告
- 养老护理员学习汇报
- (新人教PEP版)英语五年级上册全册大单元教学设计
- 小儿急性阑尾炎护理查房
- 2025-2030中国锆铪行业市场发展趋势与前景展望战略研究报告
- 专业英语翻译教学设计
- 围棋入门教案
- 煤矿安全规程培训课件
- 中药硬膏热贴敷治疗
- 经济与社会 思维导图式复习课件高中政治统编版必修二经济与社会
评论
0/150
提交评论