Reverse Polish notation(逆波兰式)

Reverse Polish notation(逆波兰式)

介绍

逆波兰式(也叫后缀表达式)是一种将算数表达式的运算符写在操作数后面的表示方法。例如,在传统的波兰式(中缀表达式)中,表达式 (1+2)*(5+4) 在逆波兰式中可以表示为 1 2 + 5 4 + * 。逆波兰式的优点之一是它是无括号。

逆波兰式的计算

新建一个表达式,如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。

代码如下:

#include <iostream>
#include <stack>
#include <cstdlib>
#include <cstdio>
using namespace std;

int main()
{
   
  stack<int> stack;
  string input;
  while(cin >> input)
  {
   
    if(input == "+")
    {
   
      int post = stack.top(); stack.pop();
      int pre = stack.top();  stack.pop();
      stack.push(pre + post);
    }
    else if(input == "-")
    {
   
      int post = stack.top(); stack.pop();
      int pre = stack.top();  stack.pop();
      stack.push(pre - post);
    }
    else if(input == "*")
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值