码迷,mamicode.com
首页 > 编程语言 > 详细

逆波兰算法~简单理解栈

时间:2017-04-08 22:47:40      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:ring   int   str   i++   space   main   tac   out   理解   

#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;
}

  

逆波兰算法~简单理解栈

标签:ring   int   str   i++   space   main   tac   out   理解   

原文地址:http://www.cnblogs.com/masterchd/p/6683101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!