《数据结构与算法》第3章 栈与队列.ppt

《数据结构与算法》第3章 栈与队列.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
答:可以简单地推算,得容易得出D,A,B,C是不可能的,因为D先出来,说明A,B,C,D均在栈中,按照入栈顺序,在栈中顺序应为D,C,B,A,出栈的顺序只能是D,C,B,A。所以本题答案为D。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 本 章 总 结 基本要求 (1)深刻领会栈的概念、实现和基本运算; (2)清楚栈的逻辑结构、基本特点(FILO),实质上,栈是一种特殊的线性表; (3)弄清栈的顺序实现的基本思想及其基本运算,以及“上溢”和“下溢”的概念; (4)掌握判断顺序栈满和栈空的条件及在顺序栈上实现入栈和出栈运算的算法; (5)清楚链栈的定义、结点形式实现方法以及与顺序栈的不同特点; (6)掌握在链栈上进行入栈和出栈运算的算法及判断栈空和栈满的条件; 本 章 总 结 (7)会在顺序栈和链栈上进行综合应用程序设计及递归过程模拟; (8)深刻领会队列的概念、实现和基本运算; (9)知道队列的逻辑结构、基本特点(FIFO),以及其与线性表和栈的异同; (10)清楚队列实质上也是一种特殊的线性表; (11)知道循环队列的结点形式、实现方法、判断队空和队满的条件; (12)掌握在循环队列上进行入队列和出队列运算的基本算法; (13)清楚链队列的类型定义、结点形式、组织方法、判断队空和队满的条件; 本 章 总 结 (14)掌握在链队列上进行入队列和出队列运算的基本算法; (15)能在循环队列和链队列上进行综合应用程序设计; (16)掌握递归过程的程序设计方法。 重点及难点 重点是:栈与队列的特点;在顺序栈和链栈上实现基本运算;在循环队列和链队列上实现基本运算的算法和栈与队列的综合应用程序设计。难点是:循环队列的队空、队满条件;用栈和队列进行综合应用程序设计,以及递归过程设计和模拟。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 栈 与 递 归 递归 若在一个函数、过程或者数据结构定义的内部,直接(或间接)出现定义本身的应用,则称它们是递归的,或者是递归定义的。递归函数是指一个直接调用自己或通过一系列的调用语句间接调用自己的函数。递归是一种强有力的数学工具,它可使问题的描述和求解变得简捷和清晰。递归算法常常比非递归算法更容易设计,尤其是当问题本身或所涉及的数据结构是递归定义时,使用递归算法特别合适。 栈 与 递 归 递归算法的设计步骤 ① 将规模较大的原问题分解为一个或多个规模更小、但具有类似于原问题特性的子问题,即较大的问题递归地用较小的子问题来描述,解原问题的方法同样可用来解这些子问题。 ② 确定一个或多个无须分解、可直接求解的最小子问题(称为递归的终止条件)。例如,非负整数n的阶乘可递归定义为: 栈 与 递 归 栈在递归算法的内部实现中所起的作用 ① 调用函数时,系统将为调用者构造一个由参数表和返回地址组成的活动记录,并将其压入到由系统提供的运行时刻栈的栈顶,然后将程序的控制权转移到被调函数。若被调函数有局部变量,则在运行时刻,在栈的栈顶也要为其分配相应的空间。因此,活动记录和这些局部变量形成了一个可供被调函数使用的活动结构。 ② 被调函数执行完毕时,系统将运行时刻栈的栈顶的活动结构退栈,并根据退栈的活动结构中所保存的返回地址将程序的控制权转移给调用者继续执行。 队 列 队列的定义 队列(Queue)是只允许在一端进行插入、在另一端进行删除的运算受限的线性表。被允许删除的一端称为队头(front),被允许插入的一端称为队尾(rear)。队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。当队列中没有元素时,称为空队列。如图所示,队列中的元素a1, a2, …, an必须按照从队头删除或从队尾加入的次序离开或进入队列。下面的程序分别给出了队列的ADT定义及其类描述。 队 列 队 列 队 列 队 列 队列的顺序存储结构 队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表。与顺序栈类似,在队列的顺序存储结构中,用一组地址连续的存储单元依次存放从队列头到队列尾的元素。指针front和rear被分别用来指示队列头元素和尾元素的位置。由于这两个指针可有多种指示队列状态的方法,为了便于描述,在本书中统一约定为:初始化建空队列时,front=rear=0;有新元素插入队尾时,rear=rear+1;从队列中删除头元素时,front=front+1;当队列非空时,头指针始终指向头元素,而尾指针始终指向队尾元素的下一个位置,如图所示。 队 列 这种表示方法会遇到一个问题,假设队列的最大空间为

文档评论(0)

ffpg + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档