#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;
}
将中缀表达式转换成后缀表达式
最新推荐文章于 2023-04-22 15:53:51 发布
本文介绍了一个简单的程序实现,用于将输入的中缀表达式转换为等价的后缀表达式形式。该程序使用了栈数据结构来处理操作符的优先级,并按顺序输出转换后的表达式。

1万+

被折叠的 条评论
为什么被折叠?



