数据结构(线性表、树、图).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构(线性表、树、图)

第八章 数据结构 数据结构概要 1.数据结构定义: 指数据元素的集合及元素之间的关系和构造方法,可以用二元组表示为:B=(A,R),其中A是数据元素的非空有限集合,R是定义在A上的关系的非空有限集合。 2.要达到的目标: (1)从问题入手,分析和研究数据结构的特性,选择适当的逻辑结构、存储结构及相应的操作方法。 (2)并掌握时间复杂度和空间复杂度的概念。 3. 按逻辑关系分类 线性结构(包括线性表、栈、队列、数组、串等) 非线性结构(树、图) 第一部分:线性结构 一、线性表 最常见的一种线性结构,有两种存储方法:顺序存储和链式存储 1、定义: N个元素的有限序列,n≥0,通常表示为(a1,a2,…,an) 2、特点: 元素集合中存在唯一称作“第一个”和唯一“最后一个”元素,除第一个元素外,每个元素均只有一个直接前驱;除最后一个元素外,序列中的每个元素只有一个直接后继。 3、存储结构: 顺序存储结构 含义:用一组连续的存储单元存放线性表中的数据元素。 特点:逻辑相邻的元素,物理位置也相邻。 优点和缺点:存取方便,插入删除操作需要移动大量元素。 第一部分:线性结构 . 链式存储结构 含义: 存储数据元素的同时必须存储元素之间的关系。用节点来存储数据元素,节点地址可以连续,也可以不连续。 节点结构: 节点的插入和删除操作 插入操作 删除操作 第一部分:线性结构 4.其他几种链表结构: 双向链表: 每个节点包含两个指针,分别指出当前节点元素的直接前驱和直接后继。 循环链表: 静态链表: 借助数组来描述线性表的链式存储结构 第一部分:线性结构 二、栈和队列 1. 栈 定义 只能通过它的一端来实现数据存储和检索的 线性结构,也称为后进先出(或先进后出)的 线性表。 基本运算 初始化栈:InitStack(S) 判栈空: StackEmpty 入栈:Push(S,x) 出栈:Pop(S) 读栈顶元素:Top(s) 存储结构 顺序存储:(顺序栈)指用一组地址连续的存储单元依次存储自栈顶到栈底的数据元素,同时附设指针top指示栈顶元素的位置。 第一部分:线性结构 链式存储(链栈):为了克服 顺序栈可能存在上溢的不足,采 用钻链表作为存储结构的栈。 栈的应用:表达式求值,括号匹配,递归转非递归。 2. 队列 定义:是一种先进先出(FIFO)的线性表,只允许在表的一端插入元素,表的另一端删除元素。 基本运算: (1)初始化队 InitQueue(Q) (2)判队空 Empty(Q) (3)入队 EnQueue(Q,x) (4)出队 DeQueue(Q) (5)读队头元素 FrontQue(Q) 第一部分:线性结构 队列的存储结构 顺序存储(顺序队列) 利用一组地址连续的存储单元存放队列中的元素,同时设置队头指针和队尾 指针,分别表示当前的队首元素和队尾元素。 思考:(1)为什么要引入循环队列? (2)什么叫假溢出?如何形成的? 链式存储(链队列) 队列的应用: 常用于需要排队的场合:比如操作系统中处理打印任务,离散事件的计算模拟等。 第一部分:线性结构 3 串 即字符串,是一种特殊的线性表,它的数据元素仅由一个字符组成。 串的定义 是仅由字符构成的有限序列,是取值范围受限的线性表。一般记为: S=‘a1a2…an’,其中S是串名,单引号括起来的字符序列是串值。 几个相关的基本概念 空串:长度为零的串,不包含任何字符。 空格串:由一个或多个空格组成的串。 子串:由串中任意长度的连续字符构成的序列称为子串。空串是任意串的子串。 串相等:两个串长度相等,且对应位置上的字符也相同。 串比较:比较大小时,以ASCII码值作为依据。 基本操作 赋值strAssign(s,t): 将串t赋给串s 连接Concat(s,t) : 串t接续在串s的尾部,形成一个新串。 第一部分:线性结构 求串长StrLength(s) 串比较StrCompare(s,t) 返回值-1、0、1分别表示st,s=t,st 求子串SubString(s,start,len) 串的存储结构 静态存储(即串的顺序存储结构) 用一组地址连续的存储单元来存储串值的字符序列。(在程序设计语言中可借助字符数组定义串的存储空间)。 链式存储 用链表存储串中的字符,每个节点中可以存储一个字符,也可以存储多个字符,注意存储密度问题,因为它直接影响到串和处理效率。 串的模式匹配 即子串

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档