



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
栈的应用: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高龄老年高血压特点
- 济南市2025-2026学年七年级上学期语文期末测试试卷
- 集安市2025-2026学年九年级上学期语文期中模拟试卷
- 电费账务基本知识培训总结
- 电脑钉钉显示课件
- 高质量培智说课课件
- 高职考现在进行时课件
- 电脑电缆知识培训课件
- 高考常见谦敬词课件
- 第5课《一着惊海天》课件-2025-2026学年统编版语文八年级上册
- 2025年大学辅导员选拔考试题库:学生综合素质评价体系评价方法试题
- 酒店前台接待流程及话术
- 2025第三届全国技能大赛竞赛(装配钳工赛项)省选拔赛考试题库(含答案)
- GB/Z 27001-2025合格评定通用要素原则与要求
- 2025年第九届“学宪法、讲宪法”活动知识竞赛测试题库及答案
- 银行规范服务礼仪培训
- 嘉兴市昊鸣纺织有限公司年产480万米高档纺织真丝面料技改项目环评报告
- 民宿管理的规章制度
- 2025四川眉山市国有资本投资运营集团有限公司招聘50人笔试参考题库附带答案详解
- 机车信号杜斌刚课件
- 《医学美容技术》课件-5强脉冲光美容技术
评论
0/150
提交评论