栈的应用:解析算术表达式

本文介绍了如何使用栈数据结构解析算术表达式,遵循先乘除后加减、先括号内后括号外的规则。通过数字栈和符号栈,对输入的数字和运算符进行处理,形成有效的计算过程。当遇到界限符或符号栈弹出界限符时,运算结束,最终数字栈的结果即为表达式的值。
摘要由CSDN通过智能技术生成

类似于 1*2-3+4-(5-6)-2/4 的式子,我们称为算术表达式。下面我们利用栈这种数据结构来解析它,即用栈来辅助计算算术表达式。

首先我们得明确计算规则:

  1. 先左后右:从左算到右
  2. 先乘除,后加减
  3. 先括号内,后括号外
原理:
  1. 使用两个栈来存储读入的字符:数字栈和符号栈
  2. 读入数字,则压入数字栈
  3. 读入符号,则把当前符号栈顶的符号与读入的符号进行优先级比较。若当前符号栈顶符号的优先级小,则继续把符号压入符号栈;若当前读入符号的优先级小,则数字栈依次出栈两个数,加上符号栈顶的符号,构成一算术表达式,通过计算得出结果,把结果压入数字栈。
  4. 当读入界限符或符号栈弹出界限符,如#,运算结束,数字栈弹栈,即最后的表达式值。
难点:
1、优先级数组priority的理解是难点。
<
  + - * / ( ) #
+ 1 1 2 2 2 1 1
- 1 1 2 2 2 1 1
* 1 1 1 1 2 1 1
/ 1 1 1 1 2 1 1
( 2 2 2 2 2 3 0
) 1 1 1 1 0 1 1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值