- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.1 栈 3.1.1 栈的定义 3.1 栈 向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素。 从一个栈删除一个元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面的相邻元素成为新的栈顶元素。 由于对栈的插入和删除操作只能在栈顶进行,所以栈是具有后进先出特性(Last In First Out)的线性表,简称为LIFO表。 3.1 栈 栈常用的基本操作: 3.1 栈 3.1.2 栈的顺序存储结构及其运算 3.1 栈 当有新元素进栈时,栈顶指针向上移动,top加1。栈指针top实际上就是数组的下标 。当有元素出栈时,栈顶指针向下移动,top减1。 用数组element[MAXLEN]作为栈的存储空间,element[top]为栈顶元素,当top= -1时栈为空;当top=0时,栈中有一个元素;当top=MAXLEN-1时,表示栈满。 当top=-1,栈为空,对空栈不能执行删除操作。当top =MAXLEN-1,栈满,栈满时不能再执行插入操作。 3.1 栈 1.初始化顺序栈 3.1 栈 2.取栈顶元素 3.1 栈 3.进栈操作 3.1 栈 4.出栈操作 3.1 栈 5.判空栈操作 3.1 栈 3.1.3 栈的链式存储结构及其运算 3.1 栈 链栈的主要操作有进栈、出栈和读栈等。 3.1 栈 1. 进栈 3.1 栈 2. 出栈 3.1 栈 3. 链栈的初始化(创建一个空链栈) 3.1 栈 3.1.4 栈的应用举例 3.1 栈 我们把运算符和界限符统称为算符,它们构成的集合称为OP。根据上述 三条算数运算规则,在运算的每一步中,任意两个相继出现的算符θ1 和θ2之间的优先关系至多是下面三种关系之一: θ1 θ2 θ1优先级低于θ2 ; θ1= θ2 θ1优先级等于于θ2 ; θ1 θ2 θ1优先级高于θ2 ; 表3-2定义了这种运算符之间的优先级。 3.1 栈 3.1 栈 为实现算符优先算法,可以使用两个工作栈。一个称作OPTR,用以寄存运算符;另 一个称作OPND用以寄存操作数或计算结果。算法的基本思想是: 首先置操作数栈为空栈,表达式起始符“@”为运算符栈的栈底元素; 依次读入表达式中的每一个字符,若是操作数则进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先级后作相应的操作,直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为“@” )。 相应的操作是指: 若栈顶元素优先级低,则当前的运算符进栈,继续读取表达式中的下一个字符; 若栈顶元素优先级等于当前运算符的优先级,则脱去括号,继续读取表达式中的下一个字符; 若栈顶元素优先级高,则从OPTR栈中弹出运算符,从OPND栈中弹出两个操作数,先弹出的是操作数2,后弹出的是操作数1,操作数1在运算符左侧,操作数2在运算符右侧,对操作数1和操作数2执行运算符指定的运算后,将结果压入OPND栈。不再读入新字符,即当前字符不变,继续和栈顶运算符比较优先级。 根据上述算法描述,不难写出该算法的C/C++源程序。在对例3.1求值过程中,栈的 变化如下表所示。 3.1 栈 3.1 栈 3.1 栈 3.1 栈 算术表达式的另一种表示形式是后缀算术表达式。它是将运算符置于两 个操作数的后面。这种表达式不存在括号,也不存在优先级的差别,计 算过程完全按照运算符出现的先后次序进行。后缀表达式不是人们日常 使用的表达式形式,这就需要将日常使用的中缀表达式变成等价的后缀 表达式,然后再进行计算。 例如,对于下面的中缀表达式: 2*5-4 20-10/(2+3) 3*(a+b)/(4-c) 对应的后缀表达式为: 2 5 * 4 – 20 10 2 3 + / - 3 a b + * 4 c - / 3.1 栈 2. 中缀表达式转换成等价的后缀表达式 3.1 栈 例3.2 将中缀表达式2*(3+5)/(6-4)转换成等价的后缀表达式。 运算过程中,运算符栈的变化及输出结果如下表所示: 3.1 栈 3.1 栈 3. 函数递归的实现 函数直接或间接地调用自己的算法,叫做递归算法。 例3.3 用递归的方法求 n!。 3.1 栈 递归函数的执行过程如下: 系统首先为递归调用建立一个工作栈,在该工作栈中存放参数、局部变量和调用后的返回地址等信息; 在每次递归调用之前,把本次算法中所使用的参数、局部变量的当前值和调用后的返回地址等压入栈顶; 在每次执行递归调用结束之后,又把栈顶元素弹出,分别赋给相应的参数和局部变量,以便使它们恢复到调用前的状态,然后返回由返回地址所指定的位置; 继续执行后续指令。 3.1 栈 例3.4 设 n=4, 计算4!。用一个栈来描述其递归的求解过程。 3.1 栈 例3.5 Hanoi塔问题 3.1 栈
您可能关注的文档
- 圆柱体的空间圆锥光反射、折射及衍射.pdf
- 第十二章 文档序列化及注册表操作.ppt
- 基于纹理分析的笔迹图像预处理子系统的设计与实现.pdf
- 直线导轨的原理和其应用.pdf
- 第四节-语义分析(上).ppt
- KJ2000煤矿监控系统软件设计思想和其实现.pdf
- 金蝶K3服务器安装及配置方法详细图解.doc
- 第09节 使用图片、滑块、.ppt
- 实验一_数据的提取及更新变换.doc
- 数据结构第03篇.ppt
- 2025年8月 在全市防汛工作视频会议上的讲话.docx
- 在2025年市委常委班子集中整治问题整改工作专题会议上的讲话+党课:以过硬作风护航高质量发展以实干担当书写新时代“赶考”答卷.pdf
- 国有企业2025年在“贯彻党中央决策部署和国企改革要求方面、全面从严治党责任落实方面、基层党组织建设方面、巡察整改长效机制建设四个方面”巡察整改专题民主生活会存在的原因分析.docx
- 2篇 2025年在四届区委第十三轮巡察动员部署会议上的讲话.pdf
- 在理论学习中心组巡视整改专题学习研讨会议上的讲话+在省委巡视反馈问题整改部署会上的讲话+工作领导小组会议上的讲话.pdf
- 2篇 2025年在四届区委第十三轮巡察动员部署会议上的讲话.docx
- 2025年国企理论学习中心组巡视巡察专题民主生活会会前学习研讨+(2025年四个方面)巡察整改专题民主生活会个人发言提纲.docx
- 局党组、宣传部、纪委监委关于2025年上半年意识形态工作总结及2025年下半年工作打算.pdf
- 4篇 2025年在学习贯彻《中华人民共和国监察法实施条例》研讨交流会上的发言.pdf
- 在市委理论学习中心组中央城市工作会议精神专题学习研讨会上的发言.+关于传达中央城市工作会议精神的讲话提纲.docx
最近下载
- 最新2025年社工(初级)考试题库(+答案).docx VIP
- 体例格式7:工学一体化课程《windows服务器基础配置与局域网组建》任务6学习任务教学活动策划表.docx VIP
- 无陪护理优劣的探讨.doc VIP
- TCALAS 38-2017 实验动物 SPF鸡和SPF鸭饲养管理指南.pdf VIP
- 2024年全国农产品质量安全检测技能竞赛理论知识考试题库(含答案).pdf VIP
- (人教版)数学五年级下册应用题“天天练”400题(第二辑),附参考答案.pdf VIP
- 体例格式7:工学一体化课程《windows服务器基础配置与局域网组建》任务5学习任务教学活动策划表.docx VIP
- 《社区服务与管理》课程标准.docx VIP
- 地理初高中知识衔接课件.pptx VIP
- 高考英语3500词频表.pdf VIP
文档评论(0)