获取后缀表达式及计算

加减乘除运算:

获取后缀表达式需要一个栈,计算后缀表达式需要一个栈。

获取后缀表达式:

1,循环开始:

  1.1,如果是数字,则直接输出

  1.2,如果是非数字,如果堆栈为空,直接入栈

     1.2.1,如果是+或- 那么遍历堆栈栈顶元素 一直输出优先级>=加减的 即输出栈顶的+-*/,

         当遇到其他字符时(如左括号)或堆栈空时break

     1.2.2,如果是*或/ 那么遍历堆栈栈顶元素 一直输出优先级>=乘除的 即输出栈顶的*/

        当遇到其他字符时(如左括号)或堆栈空时break

     1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:

     1.2.4,如果该字符是左括号时,直接放入堆栈

2,循环结束,输出堆栈中剩余数据

 

计算后缀表达式:

  1. 如果是数字,直接入栈
  2. 如果是运算符,弹栈两次,计算结果,结果入栈

 

布尔运算:

获取后缀表达式:

1,循环开始:

  1.1,如果是T,F,则直接输出

  1.2,如果是非T,F,如果堆栈为空,直接入栈

    1.2.1,如果是或,那么遍历堆栈栈顶元素 一直输出优先级>=或的 即输出栈顶的与,或,非

         当遇到其他字符时(如左括号)或堆栈空时break

    1.2.2,如果是与,那么遍历堆栈栈顶元素 一直输出优先级>=与的 即输出栈顶的与,非

        当遇到其他字符时(如左括号)或堆栈空时break

    1.2.3,如果该字符是右括号时,一直输出栈顶元素,直到遇见左括号为止break:

    1.2.4,如果该字符是左括号时,直接放入堆栈

2,循环结束,输出堆栈中剩余数据

 

计算后缀表达式:

  1. 如果是T,F,直接入栈
  2. 如果是双目运算符,弹栈两次,并进行运算,运算后,结果入栈

     3.如果是单目运算符,弹栈一次,并进行运算,运算后,结果入栈

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值