您的位置:首页 > 其它

将中缀表达式转换成后缀表达式

2014-12-18 14:14 155 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: