C++语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 作者 吕凤翥 王树彬_ 第12章 数据结构.pptVIP

C++语言程序设计教程 第2版 普通高等教育“十一五”国家级规划教材 作者 吕凤翥 王树彬_ 第12章 数据结构.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文档。上传文档
查看更多
12.1 几种常用的数据结构 12.2 查找和排序运算 第12章 数据结构 在线教务辅导网: 教材其余课件及动画素材请查阅在线教务辅导网 QQ:349134187 或者直接输入下面地址: 12.1 几种常用的数据结构 12.1.1 栈 栈是只能在一端添加和删除数据元素的线性表。线性表是由一组按照一定次序排列的数据元素构成,除第一个元素外,每一个元素有且只有一个前件;除最后一个元素外,每一个元素有且只有一个后件。 12.1 几种常用的数据结构 12.1.1 栈 栈只允许在表的末端进行添加和删除操作,这一端被称为栈顶,不允许添加和删除操作的另一端被称为栈底。在栈顶添加元素叫做入栈,删除栈顶元素叫做出栈。因为栈只能通过栈顶进行访问,所以栈也被称为先进后出的线性表。 栈的示意图 栈有3种基本状态:栈空、一般状态和栈满。栈的基本运算除了入栈和出栈外,还有栈的初始化、检测栈的基本状态、读栈顶元素等。 见书中例12.1。 队列是一种限定存取位置的线性表。它只允许在表的一端添加元素,在另一端进行删除。队列中允许添加的一端称为队尾,允许删除的一端称为队头。往队尾添加一个元素称为入队运算,从队头删除一个元素称为退队运算。 队列具有先入队的元素先退队的特点,因此,队列也称为“先进先出”的线性表。 12.1.2 队列 队列逻辑状态图 队列有3种基本状态:队空、一般状态和队满。队列的基本运算除了入队、退队运算外,还有队列的初始化、检测队列基本状态、读队头元素等。 在程序设计语言中,一般用一维数组来实现队列的顺序存储,实际应用中常采用循环队列形式。 循环队列是在队列顺序存储时,存储空间的最后一个位置已经被占用而要再进行入队运算,如果第一个位置空闲,便可使用此位置,这样就形成了逻辑上的环状空间,队列可以循环使用该环状空间。 见书中例12.2。 线性表采用链式存储结构就形成线性链表。线性链表的存取位置不受限制,可以在任何一处进行插入、删除运算,并且存储长度可变。线性链表的每一元素称为一个结点,结点由值域和指针域组成。值域用来存储线性链表的元素,指针域用来存储下一个结点的地址。最后一个结点的指针域为空,用一个表头指针指向线性链表的第一个结点。 12.1.3 线性链表  线性链表的访问是通过表头指针定位到第一个结点,随后的结点则可通过存储在每个结点中的指针域来实现。 根据指针域的指针个数不同,线性链表可分成单向链表、双向链表。 12.1.3 线性链表   单向链表的逻辑状态图 线性链表是动态分配存储空间的,只要内存空间有空闲,就不会产生溢出问题。因此在编程时遇到的数据难以估计其规模时,采用线性链表的结构为好。线性链表的基本运算有插入、删除、检测基本状态、扫面数据元素等。 见书中例12.3。 二叉树是一种非常有用的非线性结构,由多个结点组成(也可能为空)。非空二叉树只有一个根结点(没有前件的结点);每个结点最多有两个子结点,子结点区分左子结点和右子结点。子结点还可形成二叉树,分别以左子结点、右子结点为根结点的二叉树被称为左子树、右子树,没有子结点的结点被称为叶子。 12.1.4 二叉树  二叉树通常采用链式存储结构,被称为二叉链表。二叉链表中每个结点由一个值域和两个链域组成,链域被分成左指针域和右指针域,分别指向其左子树和右子树。叶子的左右指针域均为空,表示其不再有子结点。 12.1.4 二叉树  二叉树、二叉链表示意图 二叉链表的基本运算有初始化、遍历等。 二叉树的遍历一般先遍历左子树,再遍历右子树,根据对根结点的访问是在对其左、右子树的遍历之前、之间还是之后,分为前序遍历、中序遍历和后序遍历。 见书中例12.4。 12.2 查找和排序运算 顺序查找一般是指在线性表中查找指定的数据元素。从线性表的第一个数据元素开始,依次与被查找的数据元素进行比较,相等则表示找到,返回该数据元素的位置;否则返回空值,表示查找失败。 见书中例12.5。 12.2.1 查找运算 1. 顺序查找 对分查找也称折半查找,主要是为了克服顺序查找对于大的线性表查找效率低的缺点,但要求线性表是顺序存储的有序表。有序表是指线性表中的数据元素按值非递增(从小到大,允许相邻数据元素值相等)或者非递减(从大到小,也允许相邻数据元素值相等)排列的。 2. 对分查找 对分查找运算是将被查找数据元素与有序表(非递增)的

您可能关注的文档

文档评论(0)

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

1亿VIP精品文档

相关文档