数据结构第五次课-栈与队列A课件.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第五次课-栈与队列A课件

小蜗牛问妈妈:为什么我们从生下来,就要背负这个又硬又重的壳呢? 妈妈:因为我们的身体没有骨骼的支撑,只能爬,又爬不快。所以要这个壳的保护!小蜗牛:毛虫姊姊没有骨头,也爬不快,为什么她却不用背这个又硬又重的壳呢? 妈妈:因为毛虫姊姊能变成蝴蝶,天空会保护她啊。小蜗牛:可是蚯蚓弟弟也没骨头爬不快,也不会变成蝴蝶他什么不背这个又硬又重的壳呢?妈妈:因为蚯蚓弟弟会钻土, 大地会保护他啊。 小蜗牛哭了起来:我们好可怜,天空不保护,大地也不保护。蜗牛妈妈安慰他:「所以我们有壳啊!」我们不靠天,也不靠地,我们靠自己。 ;上堂课内容回顾;上节课的课后提问:顺序表和链表分别在什么情况下应用比较好?;数据结构课程的内容; 问题:已知共有n个饼并按照做出的顺序依次编号,排队等的m个人按照先后顺序编号,问第x个人买到的饼编号是什么?; 栈和队列是两种特殊的线性表,是操作受限的线性表。;第三章 栈和队列;栈的概念引入;1. 栈的定义和特点 定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈;问:堆栈逻辑结构是什么?它与上章学习的一般线性表有什么不同?;3. 栈的基本运算 ;ADT Stack { 数据对象:D={ai|ai?ElemSet, i=1,2,…,n,n?0} 数据关系:R1={ai-1,ai| ai-1,ai ?D,i=2,…,n} 基本操作: getSize(); //返回堆栈大小,即元素个数 isEmpty() ; //栈为空返回true,否则返回false push(e); //数据元素e入栈 pop(); //栈顶元素出栈 peek(); //获取栈顶元素,但不出栈 }//ADT Stack;3. 栈的存储结构 3.1 顺序栈 实现:一维数组s[M]; 多个栈共享空间; a1;3.2 链栈;入栈-在链表头部插入一个结点; 出栈-从链表头部删除一个结点; 链栈不必设头结点,因为栈顶(表头)操作频繁; 链栈一般不会满,除非插入新结点时分配内存失败 采用链栈存储方式,可使多个栈共享空间;当栈中元素个数变化较大,且存在多个栈的情况下,链栈是栈的首选存储方式。;例1:一个栈的输入序列是12345,若在入栈的过程中允许出栈,则栈的输出序列43512可能实现吗?12345的输出呢?;例2:华工计算机系2001年考研题(程序设计基础);例3 一个栈的输入序列为123,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么?;讨论:有无通用的判别原则? 有。在可能的输出序列中,不存在这样的输入序列i,j,k,能同时满足入栈顺序i,j,k 和 出栈顺序k ,i, j。;提高版:招聘单位笔试题;5. 栈的应用;1. 保护现场和恢复现场-过程的嵌套调用;例 递归的执行情况分析 ;递归调用执行情况如下:;例1:回文游戏 设计思路:用栈暂存回文 例2:数制转换(十转N) 设计思路:用栈暂存低位值 例3 :括号匹配的检验 设计思路:用栈暂存左括号 例4:表达式求值 设计思路:用栈暂存运算符;回文游戏:顺读与逆读字符串一样(不含空格);多进制输出:;多进制输出:;例如:3*(7 – 2 ) (1) 要正确求值,首先了解算术四则运算的规则: a. 从左算到右 b. 先乘除,后加减 c. 先括号内,后括号外 由此,通常此表达式的计算顺序为: 3*(7 – 2 )= 3 * 5 = 15;表达式表示法 算术表达式中最常见的表示法形式有 中缀、前缀和 后缀表示法。中缀表示法是书写表达式的常见方式,而前缀和后缀表示法主要用于计算机科学领域。;1. 中缀表达式到后缀表达式的转换 要把表达式从中缀表达式的形式转换成用后缀表示法表示的等价表达式,必须了解操作符的优先级和结合性。 优先级或者说操作符的强度决定求值顺序;优先级高的操作符比优先级低的操作符先求值。 如果所有操作符优先级一样,那么求值顺序就取决于它们的 结合性。操作符的结合性定义了相同优先级操作符组合的顺序(从右至左或从左至右)。 Left associativity : A+B+C = (A+B)+C Right associativity : A^B^C

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档