调度场算法

输入:3+4
  1. 将3入输出队列(每当输入一个数字时,直接进入输出队列)
  2. 将+号压入运算堆栈
  3. 将4入输出队列
  4. 输入结束,将操作符堆栈中剩余操作符入输出队列
  5. 在本情况下只有+号
  6. 输出 3 4 +

通过这个例子可以看出两条规则:

  • 当读入一个数字时直接入输出队列
  • 当输入结束后,运算符队列中所有操作符入输出队列

输入: 3 + 4 * 2 / ( 1 − 5 ) ^ 2 ^ 3
输入动作输出 (逆波兰表示法)运算符栈提示
3将符号加入输出队列3  
+将符号压入操作符堆栈3+ 
4将符号加入输出队列3 4+ 
*将符号压入操作符堆栈3 4* +*号的优先级高于+号
2将符号加入输出队列3 4 2* + 
/将堆栈中元素弹出,加入输出队列3 4 2 *+/号和*号优先级相同
将符号压入操作符堆栈3 4 2 */ +/号的优先级高于+号
(将符号压入操作符堆栈3 4 2 *( / + 
1将符号加入输出队列3 4 2 * 1( / + 
将符号压入操作符堆栈3 4 2 * 1− ( / + 
5将符号加入输出队列3 4 2 * 1 5− ( / + 
)将堆栈中元素弹出,加入输出队列3 4 2 * 1 5 −( / +循环直到找到(号
将堆栈元素弹出3 4 2 * 1 5 −/ +括号匹配结束
^将符号压入操作符堆栈3 4 2 * 1 5 −^ / +^号的优先级高于/号
2将符号加入输出队列3 4 2 * 1 5 − 2^ / + 
^将符号压入操作符堆栈3 4 2 * 1 5 − 2^ ^ / +^号为从右至左求值
3将符号加入输出队列3 4 2 * 1 5 − 2 3^ ^ / + 
END将栈中所有数据加入输出队列3 4 2 * 1 5 − 2 3 ^ ^ / +

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值