数据结构(线性表、树、图).ppt
《数据结构(线性表、树、图).ppt》由会员分享,可在线阅读,更多相关《数据结构(线性表、树、图).ppt(56页珍藏版)》请在三一办公上搜索。
1、第八章 数据结构,数据结构概要1.数据结构定义:指数据元素的集合及元素之间的关系和构造方法,可以用二元组表示为:B=(A,R),其中A是数据元素的非空有限集合,R是定义在A上的关系的非空有限集合。2.要达到的目标:(1)从问题入手,分析和研究数据结构的特性,选择适当的逻辑结构、存储结构及相应的操作方法。(2)并掌握时间复杂度和空间复杂度的概念。3.按逻辑关系分类线性结构(包括线性表、栈、队列、数组、串等)非线性结构(树、图),第一部分:线性结构,一、线性表最常见的一种线性结构,有两种存储方法:顺序存储和链式存储1、定义:N个元素的有限序列,n0,通常表示为(a1,a2,an)2、特点:元素集合
2、中存在唯一称作“第一个”和唯一“最后一个”元素,除第一个元素外,每个元素均只有一个直接前驱;除最后一个元素外,序列中的每个元素只有一个直接后继。3、存储结构:顺序存储结构含义:用一组连续的存储单元存放线性表中的数据元素。特点:逻辑相邻的元素,物理位置也相邻。优点和缺点:存取方便,插入删除操作需要移动大量元素。,第一部分:线性结构,.链式存储结构含义:存储数据元素的同时必须存储元素之间的关系。用节点来存储数据元素,节点地址可以连续,也可以不连续。节点结构:节点的插入和删除操作 插入操作 删除操作,第一部分:线性结构,4.其他几种链表结构:双向链表:每个节点包含两个指针,分别指出当前节点元素的直接
3、前驱和直接后继。循环链表:静态链表:借助数组来描述线性表的链式存储结构,第一部分:线性结构,二、栈和队列1.栈定义只能通过它的一端来实现数据存储和检索的线性结构,也称为后进先出(或先进后出)的线性表。基本运算初始化栈:InitStack(S)判栈空:StackEmpty入栈:Push(S,x)出栈:Pop(S)读栈顶元素:Top(s)存储结构顺序存储:(顺序栈)指用一组地址连续的存储单元依次存储自栈顶到栈底的数据元素,同时附设指针top指示栈顶元素的位置。,第一部分:线性结构,链式存储(链栈):为了克服顺序栈可能存在上溢的不足,采用钻链表作为存储结构的栈。栈的应用:表达式求值,括号匹配,递归转
4、非递归。2.队列定义:是一种先进先出(FIFO)的线性表,只允许在表的一端插入元素,表的另一端删除元素。基本运算:(1)初始化队 InitQueue(Q)(2)判队空 Empty(Q)(3)入队 EnQueue(Q,x)(4)出队 DeQueue(Q)(5)读队头元素 FrontQue(Q),第一部分:线性结构,队列的存储结构顺序存储(顺序队列)利用一组地址连续的存储单元存放队列中的元素,同时设置队头指针和队尾指针,分别表示当前的队首元素和队尾元素。思考:(1)为什么要引入循环队列?(2)什么叫假溢出?如何形成的?链式存储(链队列)队列的应用:常用于需要排队的场合:比如操作系统中处理打印任务,
5、离散事件的计算模拟等。,第一部分:线性结构,3 串 即字符串,是一种特殊的线性表,它的数据元素仅由一个字符组成。串的定义是仅由字符构成的有限序列,是取值范围受限的线性表。一般记为:S=a1a2an,其中S是串名,单引号括起来的字符序列是串值。几个相关的基本概念空串:长度为零的串,不包含任何字符。空格串:由一个或多个空格组成的串。子串:由串中任意长度的连续字符构成的序列称为子串。空串是任意串的子串。串相等:两个串长度相等,且对应位置上的字符也相同。串比较:比较大小时,以ASCII码值作为依据。基本操作赋值strAssign(s,t):将串t赋给串s连接Concat(s,t):串t接续在串s的尾部
6、,形成一个新串。,第一部分:线性结构,求串长StrLength(s)串比较StrCompare(s,t)返回值-1、0、1分别表示st求子串SubString(s,start,len)串的存储结构静态存储(即串的顺序存储结构)用一组地址连续的存储单元来存储串值的字符序列。(在程序设计语言中可借助字符数组定义串的存储空间)。链式存储 用链表存储串中的字符,每个节点中可以存储一个字符,也可以存储多个字符,注意存储密度问题,因为它直接影响到串和处理效率。串的模式匹配即子串的定位操作,是各种串处理中最重要的运算之一。有以下两种算法:(1)朴素模式匹配算法基本思想:P432(2)改进的模式匹配算法基本思
7、想:P433,第一部分:线性结构,4 数组、矩阵和广义表(1)数组定义:线性表的元素又是一个线性表,是定长线性表在维数上的一个扩张。特点:.数据元素数目固定.数据元素具有相同数据类型.数据元素的下标关系具有上下界的约束且下标有序两个基本运算 其一:给定一组下标,存取相应的数据元素;其二:给定一组下标,修改相应的数据元素中某个数据项的值。存储结构由于数组一般不作插入和删除运算,所以数组中数据元素个数和元素之间的关系固定不变,因此适合采用顺序存储结构。.二维数组的存储方式有两种:行优先:列优先:,第一部分:线性结构,(2)矩阵在数据结构中,我们研究的是如何存储矩阵中的元素。特殊矩阵 指矩阵中的元素
8、分布有一定的规律的矩阵。例如:对称矩阵、三角矩阵、对 角矩阵。存储时,可以将其压缩存储在一维数组中,并建立起每个非零元素在矩阵中的位置与其一维护数组中的位置之间的对应关系。稀疏矩阵非零元素的个数远远少于零元素的个数,且非零元素的分布没有规律。,第一部分:线性结构,5 广义表定义 是线性表的推广一,由零个或多个单元素或子表所组成的有限序列。一般记为:LS=(a1,a2,an)其中ai(1=i=n)注意与线性表的区别:基本操作 取表头:head(LS)取表尾:tail(LS)特点:多层次结构,即广义表的元素可以是子表广义表的元素可以是已经定义好的广义表 是一个递归的表,即广义表的元素可是本广义表的
9、名字存储结构通常采用链式存储结构:有两种方法,即同层结点法,表头表尾法,第二部分 非线性结构,一、树(一)树的定义及运算1、树的定义树是n(n=0)个节点的有限集合,当n=0时,称为空树,在任一非空树中:(1)有且仅有一个称为根的节点;(2)其余节点可分为m(m=0)个互不相交的有限集T1、T2、Tm,其中Ti又都是一棵树,并且乐为根节点的子树。(递归定义)2、树的基本概念 与树相关的概念有:双亲、孩子、兄弟节点的度、叶子节点、节点的层次、树的高度、有序(无序)树 3、树的遍历 按照某种次序,获取树中全部节点的信息。,第二部分 非线性结构,(二)二叉树的定义及基本运算、1、二叉树的定义:二叉树
10、或为空树;或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。2、二叉树的运算 二叉树的基本运算是遍历,其它运算都是建立在遍历的基础之上。,第二部分 非线性结构,(三)二叉树的性质(共五个性质)1、在二叉树的第 i 层上至多有2i-1 个结点。(i1)2、深度为 k 的二叉树上至多含 2k-1 个结点(k1)3、对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0=n2+1 两类特殊的二叉树:满二叉树:指的是深度为k且含有2k-1个结点的二叉树。完全二叉树:树中所含的 n 个结点和满二叉树中编号为 1 至n 的结点一 一对应。4、具有 n
11、 个结点的完全二叉树的深度为 log2n+1,第二部分 非线性结构,5、若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点:(1)若 i=1,则该结点是二叉树的根,无双亲,否则,编号为 i/2 的结点为其双亲结点;(2)若 2in,则该结点无左孩子,否则,编号为 2i 的结点为其左孩子结点;(3)若 2i+1n,则该结点无右孩子结点,否则,编号为2i+1 的结点为其右孩子结点。,第二部分 非线性结构,(四)二叉树的存储结构1、顺序存储结构(1)存储要求:用一组地址连续的存储单元存储二叉树中的数据元素,节点必须排成线性序列,并且该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 线性
链接地址:https://www.31ppt.com/p-6296802.html