#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<stack>
using namespace std;
void inToPostfix()
{
stack<char> s;
char token;
cin>>token;
while(token != '=')
{
if(token >= 'a' && token <= 'z')
{
cout<<token<<" ";
}
else
{
switch(token)
{
case ')':
{
while(!s.empty() && s.top()!= '(')
{
cout<<s.top()<<" ";
s.pop();
}
s.pop();
break;
}
case '(':
s.push(token);
break;
case '^':
{
while(!s.empty() && !(s.top() == '^' || s.top() == '(')) //'('一定要找到')'才能输出
{
cout<<s.top();
s.pop();
}
s.push(token);
break;
}
case '*':
case '/':
{
while(!s.empty() && !(s.top() == '+' || s.top() == '-' || s.top() == '('))
{
cout<<s.top();
s.pop();
}
s.push(token);
break;
}
case '+':
case '-':
{
while(!s.empty() && !(s.top() == '('))
{
cout<<s.top()<<" ";
s.pop();
}
s.push(token);
break;
}
}
}
cin>>token;
}
while(!s.empty())
{
cout<<s.top()<<" ";
s.pop();
}
cout<<endl;
}
int main()
{
inToPostfix();
return 0;
}
将中缀表达式转换成后缀表达式
最新推荐文章于 2019-07-31 18:42:57 发布