#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;
}
数据结构 ——中缀表达式转后缀表达式
最新推荐文章于 2024-08-18 12:51:45 发布