中缀表达式转换为后缀表达式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//C++实现 代码如下: #include <iostream> #include <stack> #include <string> #include <stdio.h> using namespace std; int precedence(char &c); int main() { string s; cin>>s; stack<char> sc; sc.push('@'); for(int i=0;i<s.length();i++) { char c=s.at(i); switch(c) { case '+': case '-': case '*': case '/': while(precedence(c)<=precedence(sc.top())) { cout<<sc.top(); sc.pop(); } sc.push(c); break; case '(': sc.push(c); break; case ')': while(sc.top()!='(') { cout<<sc.top(); sc.pop(); } sc.pop(); break; default: cout<<int(c-48)<<" "; } } while(sc.top()!='@') { cout<<sc.top()<<" "; sc.pop(); } cout<<endl; return 0; } int precedence(char &c) { switch(c) { case '+': return 1; case '-': return 1; case '*': return 2; case '/': return 2; case '(': return 0; case '@': return -1; } }