程序设计方法与案例分析 教学课件 作者 林志英 魏雪英 第5章.pptVIP

程序设计方法与案例分析 教学课件 作者 林志英 魏雪英 第5章.ppt

  1. 1、本文档共443页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 应 用 数 据 结 构 5.1 数据结构的基本概念 5.2 线 性 表 5.3 栈 和 队 列 5.4 串 5.5 多维数组和广义表 5.6 树 5.7 图 5.8 查 找 5.9 排 序 本章主要介绍数据结构的基本概念和算法,包括线性表、栈和队列、字符串、多维数组和广义表、树、图、查找和内部排序。 5.1 数据结构的基本概念 5.1.1 什么是数据结构 数据结构指的是数据之间的相互关系,即数据的组织形式,它一般包括以下3个方面的内容。 (1)数据元素之间的逻辑关系,也称为数据的逻辑结构。 (2)数据元素及其关系在计算机存储器内的表示,称为数据的存储结构。 (3)数据的运算,即对数据施加的操作。 数据的逻辑结构有两大类:线性结构和非线性结构。 (1)线性结构 线性结构的逻辑特征是:在数据元素的非空有限集合中,有且仅有一个开始结点,它没有前驱结点,只有一个后继结点;有且仅有一个终端结点,它没有后继结点,只有一个前驱结点;除开始结点和终端结点外,集合中的每个结点有且只有一个前驱结点,有且只有一个后继结点。线性表、栈、队列和字符串均属于线性结构。 线性结构的基本关系图如图5.1所示。 (2)非线性结构 非线性结构的逻辑特征是一个结点可能有多个直接前驱和直接后继。树和图属于非线性结构。 非线性结构的基本关系图如图5.2和图5.3所示。 数据的存储结构可用以下4种基本的存储方法得到。 (1)顺序存储方法 顺序存储方法是把逻辑上相邻的结点存储在物理位置上相邻的存储单元里。 顺序存储结构通常借用程序语言的数组来描述。 (2)链式存储结构 链式存储方法不要求逻辑上相邻的结点在物理位置上亦相邻。链式存储结构通常借助于程序语言的指针类型来实现。 (3)索引存储方法 索引存储方法通常是在存储结点信息的同时,还建立附加的索引表。 (4)散列存储方法 散列存储方法的基本思想是根据结点的关键字直接计算出该结点的存储地址。 5.1.2 数据结构的常用术语 数据:是描述客观事件的数据、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。 数据元素:是数据的基本单位。有时一个数据元素可以由若干个数据项组成,在这种情况下,常把数据元素称为记录。数据项是具有独立含义的最小单位。 5.2 线 性 表 5.2.1 线性表的概念 一个线性表是由n(n≥0)个具有相同数据类型的数据元素(可称为结点)组成的有限序列。其中,数据元素的个数n称为线性表的长度。当n=0时称为空表。 通常将一个非空的线性表(n0)记作: (a1,a2 ,a3 ,… ,an) 其中,a1称为开始结点,an称为终端结点,ai-1称为ai的前驱结点,ai+1称为ai的后继结点。 线性表结点之间的逻辑关系就是结点之间的邻接关系。 在同一个线性表中,每个数据元素的数据类型必须一致。但数据的类型可以是整数型、浮点数型、字符型或者字符串等。 线性表的基本操作主要有以下几项。 (1)初始化 (2)求表的长度 (3)取元素 (4)插入元素 (5)删除元素 5.2.2 线性表的顺序存储 把顺序存储的线性表称为顺序表。线性表的顺序存储是指用一组连续的存储单元依次存储线性表中的数据元素。在线性表的顺序存储结构中,数据元素之间的逻辑关系与其在内存中的物理顺序是一致的。 假设线性表的每个元素需占用k个存储单元,以第一个单元的所占存储地址作为数据元素的存储位置。则线性表中的第i个数据元素ai的存储位置为 LOC(ai)=LOC(a1)+(i?1)* k 其中,LOC(a1)表示线性表的第一个数据元素a1的存储位置,通常称做线性表的起始位置或基 地址。 在顺序表中,每个结点的存储位置都和线性表的起始位置相差一个常数,该常数与结点在线性表中的位置成正比,如图5.4所示,其中b= LOC(a1)。 线性表的顺序存储结构是一中随机存取的存储结构。 线性表的类型说明如下: typedef int DataType; /* 假设线性表中数据元素的类型为整型*/ #define MAXLEN 1024 /* 线性表的最大长度,假设为1024*/ typedef struct sqlist { DataType elem[MAXLEN]; /* 定义存储线性表的一维数组,第一个数据元素存放在elem[1]中 */ int last; /* last表示线性表中最后一个元素的位置 */ } Sqlist; 其中,last是0至MAXLEN之间的一个整数,当last为0时,线性表为空表。 假设线性表中的数据从下标为1的数组元素开始存放(不使用下标为0的数组元素)。因此,数组中最多可以存

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档