C++中缀表达式转换后缀表达式
来源:互联网 发布:变声软件手机版 编辑:程序博客网 时间:2024/06/05 00:44
#include <iostream>#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(); }}int main(){ inToPostfix(); return 0;}