



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
栈的应用:C实现简单计算器(表达式的计算)作为栈的著名应用,表达式的计算可以用下面方法实现:首先建立两个栈,操作数栈NUM_S和运算符栈OPR_S。其中,操作数栈用来存储表达式中的操作数;运算符栈用来存储表达式中的运算符。可以用字符=来表示表达式结束符。自左至右的扫描待处理的表达式,并假设当前扫描到的符号为W,根据不同的符号W做如下不同的处理: 1.若W为操作数,则将W压入操作数栈NUM_S,且继续扫描下一个字符; 2.若W为运算符,则根据运算符的性质做相应的处理: (0)若符号栈为空,无条件入栈当前指针指向的字符(1)若w为不大于运算符栈栈顶的运算符,则从操作数栈NUM_S中弹出两个操作数,设先后弹出的操作数为a、b,再从运算符栈OPR_S中弹出一个运算符,比如为+,然后作运算a+b,并将运算结果压入操作数栈NUM_S。(2)若w为左括号或者运算符的优先级大于运算符栈栈顶的运算符,则将运算符W压入运算符栈OPR_S,并继续扫描下一个字符。(3)若运算符W为右括号,循环操作(设先后弹出的操作数为a、b,再从运算符栈OPR_S中弹出一个运算符,比如为+,然后作运算a+b, 并将运算结果压入操作数栈NUM_S),直到从运算符栈中弹出第一个左括号。(4)若运算符W为表达式结束符=,循环操作(设先后弹出的操作数为a、b,再从运算符栈OPR_S中弹出一个运算符,比如为+,然后作运算a+b, 并将运算结果压入操作数栈NUM_S),直到运算符栈为空为止。此时,操作数栈栈顶元素即为表达式的值。=举例: 计算 3+(5-2*3)/4-2=(1)开始栈为空,3入栈,+入栈,(无条件入栈,5入栈,-号优先级比(高,所以-号入栈,2入栈,*优先级比目前栈顶的-号优先级高,所以*入栈,3入栈,接着扫描到)括号,)括号不入栈| | | |- -| 3 | | * |- -| 2 | | - |- -| 5 | | ( |- -| 3 | | + |- - 操作数栈 操作符栈 (2) 在)括号碰到(括号之前,让操作数栈一直出栈,直到让左括号出栈为止 所以: 2,3弹出操作数栈,*弹出操作符号栈,计算 2*3 = 6,然后将6入操作数栈 | | | |- -| | | |- -| 6 | | - |- -| 5 | | ( |- -| 3 | | + |- - 操作数栈 操作符栈 (3) 接着6,5弹出操作数栈,-弹出操作符栈,计算 5-6 = -1, 然后将-1入操作数栈,然后左括号出栈 | | | |- -| | | |- -| | | |- -| -1 | | |- -| 3 | | + |- - 操作数栈 操作符栈 (4)接着向下遍历表达式,到/号,优先级比操作符栈栈顶+高,所以/压栈,然后接着扫描,4入栈,再接着扫描到-号,优先级比操作符栈栈顶/的优先级低,则操作数栈4,-1出栈,操作符栈/出栈,计算-1/4 = 0, | | | |- -| | | |- -| 4 | | |- -| -1 | | / |- -| 3 | | + |- - 操作数栈 操作符栈 (5) 将上一步结果0压入操作数栈,刚才扫描到的-号,优先级和+号相同,则-号不入栈,将0,3弹出,将+号弹出,计算 3+0 = 3 | | | |- -| | | |- -| | | |- -| 0 | | |- -| 3 | | + |- - 操作数栈 操作符栈 (6)将上一步中的结果3压入操作数栈,-号入操作符栈,接着扫描到2,2入操作数栈,接着扫描,发现到了=号,则操作数栈2,3弹出,操作符栈-号弹出,计算 3-2 = 1 | | | |- -| | | |- -| | | |- -| 2 | | |- -| 3 | | - |- - 操作数栈 操作符栈 (7)将上一步中的结果1压入操作数栈,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年中国聚合氯化铝(PAC)行业市场调查报告
- 2025年锚具市场分析现状
- 汽车加气站项目社会稳定风险评估报告
- 2025年中国音频线市场调查研究及行业投资潜力预测报告
- 中国平板电视行业市场全景调研及投资规划建议报告
- 中国摊片烤片机行业发展监测及投资战略研究报告
- 2024-2030全球船用锻件行业调研及趋势分析报告
- 私人定制策划方案个性化服务满足需求
- 2021-2026年中国气门嘴市场竞争策略及行业投资潜力预测报告
- 中国广告垃圾箱行业市场前景预测及投资价值评估分析报告
- 私企退休员工管理办法
- 2025年地区事业单位招聘公共基础知识重点难点突破试题
- 2025变压器类产品型号注册管理
- 学堂在线 中国建筑史-元明清与民居 期末考试答案
- 推进教师跨学科教学能力提升方案
- 职业院校与企业深度合作2025年校企合作人才培养质量提升策略与实践报告
- 2025党考试题及答案
- 曲臂高空作业车安全操作规程
- 水路运输安全管理培训
- 中国支付体系行业市场运行现状及投资规划建议报告
- 自动化立体库培训
评论
0/150
提交评论