Data structure - infix expression to postfix expression

insert image description here

#include <bits/stdc++.h>
#include <stack>
#include <cstring>
using namespace std;

int main()
{
    
    
    string s, ss;
    cin >> s;
    stack<char> st;
    for (int i = 0; i < s.size(); i++)
    {
    
    
        if (s[i] >= 'A' && s[i] <= 'Z')
        {
    
    
            ss.push_back(s[i]);
        }
        else if (s[i] == '(')
        {
    
    
            st.push(s[i]);
        }
        if (s[i] == ')')
        {
    
    
            while (st.top() != '(')
            {
    
    
                ss.push_back(st.top());
                st.pop();
            }
            st.pop();
        }
        if (s[i] == '+' || s[i] == '-')
        {
    
    
            while (!st.empty() && st.top() != '(')
            {
    
    
                ss.push_back(st.top());
                st.pop();
            }
            st.push(s[i]);
        }
        if (s[i] == '*' || s[i] == '/')
        {
    
    
            while (!st.empty() && st.top() != '(' && st.top() != '+' && st.top() != '-')
            {
    
    
                ss.push_back(st.top()); 
                st.pop();
            }
            st.push(s[i]);
        }
    }
    while (!st.empty())
    {
    
    
        ss.push_back(st.top());
        st.pop();
    }
    cout << ss << endl;
}

Guess you like

Origin blog.csdn.net/qq_45148277/article/details/130306069