#include<map>
#include<iostream>
#include<stack>
#include<vector>
using namespace std
;
const int maxn
= 1e4 + 10;
typedef long long ll
;
stack
<char> sta
;
int main()
{
map
<char, int> mp
;
string str
;
cin
>> str
;
bool isfirst
= true;
mp
['-'] = 1, mp
['+'] = 1;
mp
['*'] = 2, mp
['/'] = 2;
mp
['('] = 3, mp
[')'] = 3;
for (int i
= 0; i
< str
.size(); i
++)
{
if (((i
== 0 || str
[i
- 1] == '(') && (str
[i
] == '+' || str
[i
] == '-')) || (str
[i
] >= '0' && str
[i
] <= '9'))
{
if (!isfirst
)
{
cout
<< " ";
}
if (str
[i
] != '+')
{
cout
<< str
[i
];
}
while (str
[i
+ 1] == '.' || (str
[i
+ 1] >= '0' && str
[i
+ 1] <= '9'))
{
i
++;
cout
<< str
[i
];
}
isfirst
= false;
}
else
{
if (str
[i
] == ')')
{
while (!sta
.empty() && sta
.top() != '(')
{
cout
<< ' ' << sta
.top();
sta
.pop();
}
sta
.pop();
}
else if (sta
.empty() || mp
[str
[i
]] > mp
[sta
.top()])
{
sta
.push(str
[i
]);
}
else
{
while (!sta
.empty() && sta
.top() != '(')
{
cout
<< ' ' << sta
.top();
sta
.pop();
}
sta
.push(str
[i
]);
}
}
}
while (!sta
.empty())
{
cout
<< ' ' << sta
.top();
sta
.pop();
}
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-35873.html