如何使用c++语言计算后缀表达式的值

 时间:2024-10-14 00:00:43

1、作为例子,我们要计算的后缀表达式为:6 5 2 3 + 8 ∗ +3 + ∗它对应的的中缀表达式为((2+3)*8+5+3)*6

如何使用c++语言计算后缀表达式的值

2、创建一个堆栈结构从左到右意思扫描输入的后缀表达式,存储后缀表达式中的操作数。

如何使用c++语言计算后缀表达式的值
如何使用c++语言计算后缀表达式的值

3、如果扫描到的元素是一个操作数,那么我们就应该把这个操作数存储到堆栈 结构当中。

如何使用c++语言计算后缀表达式的值
如何使用c++语言计算后缀表达式的值

4、如果我们扫描到的元素是一个操作符,那么就从堆栈当中导出(pop)两个操作数,使用该操作符计算两个操作数的值。在将该结果导入到(push)堆栈当中

如何使用c++语言计算后缀表达式的值
如何使用c++语言计算后缀表达式的值
如何使用c++语言计算后缀表达式的值

5、如果如果后缀表达式扫描完毕,那么在堆栈中剩余的那个数就是我们想要的最后结果。

如何使用c++语言计算后缀表达式的值

6、在这一步,我将我自己根据该算法写的代码粘贴在下面提供参考。大家也可以根据自己的想法自由发挥。#include <iostream>#include <vector&爿讥旌护gt;#include<stack>using namespace std;int main(){ //initialize stack<int> st; vector <char> ss={'6','5','2','3','+','8','*','+','3','+','*'} ; for (auto c:ss) { if (c>='0'&&c<='9') { int a1=c-48; st.push(a1); } else if (c=='*') { int a=st.top(); st.pop(); int b=st.top(); st.pop(); st.push(a*b); } else if (c=='+') { int a=st.top(); st.pop(); int b=st.top(); st.pop(); st.push(a+b); } }cout<<st.top()<<endl; return 0;}

如何使用c++语言计算后缀表达式的值
  • 设int x=1,y=1;表达式(!x||y--)的值 是怎么 运算的。求解。
  • 食物同食注意事项
  • 预防冠心病从青少年做起!
  • 二次曲面存在奇向的充要条件
  • C语言简单编程之“整除与求余”运算的应用
  • 热门搜索
    初二历史手抄报 感念师恩手抄报 讲文明懂礼貌手抄报 食品安全的手抄报 运动会手抄报内容 数学知识手抄报 理想的手抄报 法律伴我成长手抄报 世界知识产权日手抄报 科学手抄报的资料