逆波兰算法~简单理解栈

2018-06-17 22:51:35来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
    stack<int> st;//初始化栈
    string s;
    cin>>s;
    int x,y;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='+')
        {
            x=st.top();//返回头部值
            st.pop();//弹出
            y=st.top();
            st.pop();
            st.push(x+y);
        }
        else if(s[i]=='-')
        {
            x=st.top();
            st.pop();
            y=st.top();
            st.pop();
            st.push(y-x);
        }
        else if(s[i]=='*')
        {
            x=st.top();
            st.pop();
            y=st.top();
            st.pop();
            st.push(x*y);
        }
        else if(s[i]=='/')
        {
            x=st.top();
            st.pop();
            y=st.top();
            st.pop();
            st.push(y/x);
        }
        else
        {
            st.push(s[i]-'0');//字符转实数压入
        }
    }
    cout<<st.top()<<endl;
}

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:1077 多源最短路

下一篇:c++设计成员变量可动态调整的动态类结构