数据结构二版杨枨数据结构:第三章:线性表课件.pptVIP

数据结构二版杨枨数据结构:第三章:线性表课件.ppt

  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文档。上传文档
查看更多
数据结构二版杨枨数据结构:第三章:线性表课件.ppt

2003年12月1日 软件需求工程 第三章 线性表 3.1 线性表的定义 3.2 线性表的顺序存贮及其运算 3.3 线性表的链式存储结构及其运算 3.4 串 3.5 线性表的应用 3.6 小结 3.1 线性表的定义 定义: 线性表是由n个数据元素所构成的一个有限序列, 表中的每一个数据元素都具有相同的数据类型,可记为(a1, a2, ... ai, ... an-1, an), 其中的每个ai就是一个数据元素,也称之为结点, a1为表中的第一个结点,而an为表中的最后一个结点。 结点与结点之间具有一定的前后次序关系,亦即除了第一个结点以外,每一个结点都有一个前驱,ai的前驱就是ai-1,除了最后一个结点以外,每一个结点都有一个后继,ai的后继就是 ai+1。 3.1 线性表的定义 定义 线性表中数据元素的个数n就是线性表的长度, 当n=0时,该线性表就是一张空表。 对于表中的每一个数据元素,它都有确定的位置,也就是该数据元素在表中的序号,比如结点ai是线性表中的第i个数据元素,因此,它的位置就是i。 组成节点的数据项称为结点中的数据域。 可以唯一地标识结点的数据域,称为结点的关键字。 3.1 线性表的定义 基本操作: 1. ? 初始化:构造一张空的线性表。 2. ? 销毁:销毁一张已存在的线性表。 3. ? 求长度:求出线性表中数据元素的个数。 4. ? 定位:找出线性表中满足特定条件的元素的位置。 5. ? 插入元素:在线性表中的特定位置之前插入新的数据元素。 6. ? 删除元素:删除线性表中特定位置的数据元素。 7. ? 取元素:根据数据元素的位置,从线性表中取出该元素。 8. ? 求前驱:求出线性表中特定数据元素的前驱。 9. ? 求后继:求出线性表中特定数据元素的后继。 10. 遍历:顺序访问线性表中的每个数据元素, 3.2 线性表的顺序存贮及其运算 顺序表: 表中的结点依次存储在一组地址连续的存储单元中, 结点的逻辑顺序与它在存储器中的物理顺序一致 。 表中第i个结点的存储地址为:Loc(ai) = Loc(a1) + (i - 1) * m 3.2 线性表的顺序存贮及其运算 顺序表的特性 只要知道了表中第一个结点的存储位置,就可以得到表中任意结点的存储位置。 通常采用一维数组来表示顺序表的存储结构。 定义模式: 3.2 线性表的顺序存贮及其运算 顺序表的具体操作实现: 1. 初始化 2. 销毁 3. 求长度 4. 定位 5. 插入元素 6. 删除元素 7. 取元素 8. 求前驱 9. 求后继 10. 遍历 3.3 线性表的链式存储结构及其运算 顺序存储也有明显的缺点 : 占据较大的连续存储空间,不利于零碎内存空间的利用。 在数据元素的插入和删除时,为了保证逻辑关系与物理位置的对应,必须要移动元素。 线性表的链式存储结构 : 线性链表 双向链表 循环链表 3.3.1 线性链表 数据元素的逻辑关系是通过指针来表示的 结点除了要有存储数据元素的数据域外,还要有存储指示其与其它元素的逻辑关系的指针。 结点的一般形式: 3.3.1 线性链表 存储结构定义: 3.3.1 线性链表 头节点的引入: 在线性链表的第一个结点之前附设一个结点,称为头结点。 存储结构与链表中的结点结构相同, 它的指针域中存储指向线性表中真正的第一个结点的指针, 链表的头指针就指向线性表的头结点。 判断线性表是否为空的标志要看头结点的指针域是否为空。 头节点的作用: 使对第一个结点的操作方法与其它结点的操作方法一样。 使算法的实现更加简洁。 3.3.1 线性链表 具体操作实现: 1. 初始化 2. 销毁 3. 求长度 4. 定位 5. 插入元素 6. 删除元素 7. 取元素 8. 求前驱 9. 求后继 10. 遍历 3.3.2 双向链表 在单链表中,寻找一个结点的前驱需要从表头开始进行查找,不太方便。 在双向链表中,每个结点包含三个域:一个数据域和两个指针域。其中,一个指针域指向结点的后继,另一个指向它的前驱。 结点的结构如下图所示: 3.3.2 双向链表 存储结构定义: typedef struct noode_st { ELEMENT element; struct node_st *forward; *backward; } NODE; 特点: p-backward-forward = p-forward-backward = p 进行插入与删除的操作比较方便。 3.3.2 双向链表 具体操作实现: 1. 初始化 2. 销毁 3. 求长度 4. 定位 5. 插入

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档