C++ 基礎題 : 後序式求值

關於 stack 的應用 ( 經典題 )

#include<bits/stdc++.h>

using namespace std;

int main(){
    string c;//運算式 
    while(getline(cin,c)){
        stack<int> st;
        for(int i=0;i<c.size();i++){
            if(isdigit(c[i])){
                st.push(c[i]-'0');
            }else{
                if(c[i]=='+'){
                    int a=st.top();
                    st.pop();
                    int b=st.top();
                    st.pop();
                    
                    st.push(b+a);
                }else if(c[i]=='-'){
                    int a=st.top();
                    st.pop();
                    int b=st.top();
                    st.pop();
                    
                    st.push(b-a);
                }else if(c[i]=='*'){
                    int a=st.top();
                    st.pop();
                    int b=st.top();
                    st.pop();
                    
                    st.push(b*a);
                }else if(c[i]=='/'){
                    int a=st.top();
                    st.pop();
                    int b=st.top();
                    st.pop();
                    
                    st.push(b/a);
                }else if(c[i]=='%'){
                    int a=st.top();
                    st.pop();
                    int b=st.top();
                    st.pop();
                    
                    st.push(b%a);
                }
                
            }
        }
        cout<<st.top()<<"\n";
    }
    return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *