数据结构和算法.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构和算法.ppt》由会员分享,可在线阅读,更多相关《数据结构和算法.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构和算法现在学习的是第1页,共54页数据结构(Data Structure)是指相互之间具有(存在)一定联系(关系)的数据元素的集合。元素之间的相互联系(关系)称为逻辑结构。数据元素之间的逻辑结构有四种基本类型集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。线性结构:结构中的数据元素之间存在一对一的关系。树型结构:结构中的数据元素之间存在一对多的关系。图状结构或网状结构:结构中的数据元素之间存在多对多的关系。现在学习的是第2页,共54页数据结构的存储方式数据结构在计算机内存中的存储包括数据元素的存储和元素之间的关系的表示。元素之间的关系在计算机中有两种不同的表示方法:顺序表
2、示和非顺序表示。由此得出两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer),用该指针来表示数据元素之间的逻辑结构(关系)。现在学习的是第3页,共54页逻辑结构和物理结构数据的逻辑结构数据的逻辑结构非线性结构非线性结构集合图状结构有向图无向图树形结构一般树二叉树线性结构线性结构一般线性表线性表推广广义表数组串受限线性表栈和队列数据逻辑结构层次关系图数据逻辑结构层次关系图图图1-4 逻辑结构与所采用的存储结构逻辑结构与所采用的存储结构线性
3、表线性表树树图图顺序存储结构顺序存储结构链式存储结构链式存储结构复合存储结构复合存储结构逻辑结构逻辑结构物理结构物理结构现在学习的是第4页,共54页数据结构的运算数据结构的主要运算包括:建立(Create)一个数据结构;消除(Destroy)一个数据结构;从一个数据结构中删除(Delete)一个数据元素 把一个数据元素插入(Insert)到一个数据结构中;对一个数据结构进行访问(Access);对一个数据结构(中的数据元素)进行修改(Modify);对一个数据结构进行排序(Sort);对一个数据结构进行查找(Search)。现在学习的是第5页,共54页线性表线性结构是最常用、最简单的一种数据结
4、构。而线性表是一种典型的线性结构。其基本特点是线性表中的数据元素是有序且是有限的。在这种结构中:存在一个唯一的被称为“第一个”的数据元素;存在一个唯一的被称为“最后一个”的数据元素;除第一个元素外,每个元素均有唯一一个直接前驱;除最后一个元素外,每个元素均有唯一一个直接后继。现在学习的是第6页,共54页线性表的顺序存储 在高级语言(如C语言)环境下,数组具有随机存取的特性,因此,借助数组来描述顺序表。顺序存储结构中,很容易实现线性表的一些操作:初始化、赋值、查找、修改、插入、删除、求长度等现在学习的是第7页,共54页线性表的链式存储用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线
5、性表简称线性链表。存储链表中结点的一组任意的存储单元以是连续的或不连续的,甚至是零散分布在内存中的任意位置。为了正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其直接后继结点的地址(或位置),称为指针(pointer)或链(link),这两部分组成了链表中的结点结构链表是通过每个结点的指针域将线性表的n个结点按其逻辑次序链接在一起的。每一个结只包含一个指针域的链表,称为单链表。为操作方便,总是在链表的第一个结点之前附设一个头结点(头指针)head指向第一个结点。现在学习的是第8页,共54页双向链表双向链表(Double Linked List)指的是构成链表的每个结点中设立两个
6、指针域,一个指向其直接前趋的指针域prior,一个指向其直接后继的指针域next。这样形成的链表中有两个方向不同的链,故称为双向链表。和单链表类似,双向链表一般增加头指针也能使双链表的某些运算变得方便。将头结点和尾结点链接起来也能构成循环链表,并称之为双向循环链表。双向链表是为了克服单链表的单向性的缺陷而引入的。现在学习的是第9页,共54页双向链表的结点及其类型定义data nextprior双向链表结点形式双向链表结点形式非空双向链表非空双向链表heada2a1an空双向链表空双向链表head带头结点的双向链表形式带头结点的双向链表形式现在学习的是第10页,共54页栈和队列 栈和队列是两种应
7、用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表。栈在计算机的实现有多种方式:硬堆栈:利用CPU中的某些寄存器组或类似的硬件或使用内存的特殊区域来实现。这类堆栈容量有限,但速度很快;软堆栈:这类堆栈主要在内存中实现。实现方式又有动态方式和静态方式两种。现在学习的是第11页,共54页栈的基本概念 栈(Stack):是限制在表的一端进行插入和删除操作的线性表。又称为后进先出LIFO(Last In First Out)或先进后出FILO(First In Last Out)线性表。栈顶(Top):允许进行插入、删除操作的一端,又称为表尾。用栈顶指针(top)来指示栈顶元素。
8、栈底(Bottom):是固定端,又称为表头。空栈:当表中没有元素时称为空栈。现在学习的是第12页,共54页栈的顺序存储表示 栈的顺序存储结构简称为顺序栈,和线性表相类似,用一维数组来存储栈。根据数组是否根据需要增大,又分为静态顺序栈和动态顺序栈。静态顺序栈实现简单,但不能根据需要增大栈的存储空间;动态顺序栈根据需要增大栈的存储空间,但实现稍为复杂。现在学习的是第13页,共54页栈的链式存储表示 栈的链式存储结构称为链栈,是运算受限的单链表。其插入和删除操作只能在表头位置进行。因此,链栈没有必要像单链表那样附加头结点,栈顶指针top就是链表的头指针现在学习的是第14页,共54页栈的应用 由于栈具
9、有的“后进先出”的固有特性,因此,栈成为程序设计中常用的工具和数据结构。以下是几个栈应用的例子 后缀表达式计算 中缀表达式变后缀表达式 栈与递归调用的实现现在学习的是第15页,共54页队 列队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out,简称FIFO)的线性表。只允许在表的一端进行插入,而在另一端进行删除。队首(front):允许进行删除的一端称为队首。队尾(rear):允许进行插入的一端称为队尾。队列中没有元素时称为空队列。在空队列中依次加入元素a1,a2,an之后,a1是队首元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,an,即
10、队列的修改是依先进先出的原则进行的现在学习的是第16页,共54页循环队列 为充分利用向量空间,克服“假溢出”现象,将队列分配的向量空间看成为一个首尾相接的圆环,并称这种队列为循环队列(Circular Queue)。123450(a)空队列空队列frontrear123450(b)d,e,b,g入入队队frontdebgrear123450(c)d,e出队出队bgfrontrear现在学习的是第17页,共54页队列的链式表示和实现 队列的链式存储结构简称为链队列,它是限制仅在表头进行删除操作和表尾进行插入操作的单链表。需要两类不同的结点:数据元素结点,队列的队首指针和队尾指针的结点现在学习的是
11、第18页,共54页树与二叉树现在学习的是第19页,共54页树和二叉树 树型结构是一类非常重要的非线性结构。直观地,树型结构是以分支关系定义的层次结构。树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结构;在数据库系统中,用树来组织信息;在分析算法的行为时,用树来描述其执行过程等等。本章将详细讨论树和二叉树数据结构,主要介绍树和二叉树的概念、术语,二叉树的遍历算法。树和二叉树的各种存储结构以及建立在各种存储结构的操作及应用等。现在学习的是第20页,共54页树的定义 树(Tree)是n(n0)个结点的有限集合T,若n=0时称为空树,否则:有且只有一个特殊的称为树的根(Ro
12、ot)结点;若n1时,其余的结点被分为m(m0)个互不相交的子集T1,T2,T3Tm,其中每个子集本身又是一棵树,称其为根的子树(Subtree)。这是树的递归定义,即用树来定义树,而只有一个结点的树必定仅由根组成现在学习的是第21页,共54页树的基本术语 结点(node):一个数据元素及其若干指向其子树的分支。结点的度(degree)、树的度:结点所拥有的子树的棵数称为结点的度。树中结点度的最大值称为树的度。树的示树的示例形式例形式AABDCEGFHIMJNKL(a)只有根结点只有根结点(b)一般的树一般的树现在学习的是第22页,共54页树的基本术语叶子(left)结点、非叶子结点 树中度为
13、0的结点称为叶子结点(或终端结点)。相对应地,度不为0的结点称为非叶子结点(或非终端结点或分支结点)。除根结点外,分支结点又称为内部结点。孩子结点、双亲结点、兄弟结点 一个结点的子树的根称为该结点的孩子结点(child)或子结点;相应地,该结点是其孩子结点的双亲结点(parent)或父结点。森林(forest):是m(m0)棵互不相交的树的集合。显然,若将一棵树的根结点删除,剩余的子树就构成了森林。现在学习的是第23页,共54页树的表示形式 倒悬树。是最常用的表示形式 嵌套集合。是一些集合的集体,对于任何两个集合,或者不相交,或者一个集合包含另一个集合 广义表形式 凹入法表示形式树的表示树的表
14、示形式形式(a)嵌套集合嵌套集合形式形式(b)广义表广义表形式形式(A(B(E(K,L),F),C(G(M,N),D(H,I,J)HIJDFBKLECM NGA现在学习的是第24页,共54页二叉树二叉树(Binary tree)是n(n0)个结点的有限集合。若n=0时称为空树,否则:有且只有一个特殊的称为树的根(Root)结点;若n1时,其余的结点被分成为二个互不相交的子集T1,T2,分别称之为左、右子树,并且左、右子树又都是二叉树。由此可知,二叉树的定义是递归的。二叉树在树结构中起着非常重要的作用。因为二叉树结构简单,存储效率高,树的操作算法相对简单,且任何树都很容易转化成二叉树结构。上节中
15、引入的有关树的术语也都适用于二叉树。现在学习的是第25页,共54页二叉树的基本形态AAAA(a)(b)(c)(d)(e)(a)空空二叉树二叉树(b)单结点单结点二叉树二叉树(c)右子树为空右子树为空(d)左子树为空左子树为空(e)左左、右子树都不空右子树都不空二叉二叉树的基本树的基本形态形态现在学习的是第26页,共54页二叉树的性质 性质1:在非空二叉树中,第i层上至多有2i-1个结点(i1)。性质2:深度为k的二叉树至多有2k-1个结点(k1)。性质3:对任何一棵二叉树,若其叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。现在学习的是第27页,共54页满二叉树 一棵深度为k且有2k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内