//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;
}
}