文章:http://blog.csdn.net/sgbfblog/article/details/8001651
按照这个思路写的代码:
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
int main(){
char num[1005];
while(scanf("%s",num)!=EOF){
int len=strlen(num);
stack<char>s;
for(int i=0;i<len;i++){
if(num[i]=='+'||num[i]=='-'){
while(!s.empty()&&(s.top()=='+'||s.top()=='-'||s.top()=='*'||s.top()=='/')){
printf("%c",s.top());
s.pop();
}
s.push(num[i]);
}
else if(num[i]=='*'||num[i]=='/'){
while(!s.empty()&&(s.top()=='*'||s.top()=='/')){
printf("%c",s.top());
s.pop();
}
s.push(num[i]);
}
else if(num[i]=='('){
s.push(num[i]);
}
else if(num[i]==')'){
while(s.top()!='('){
printf("%c",s.top());
s.pop();
}
s.pop();
}
else {
printf("%c",num[i]);
}
}
while(!s.empty()){
printf("%c",s.top());
s.pop();
}
// printf("\n");
}
}
//a+b*c+(d*e+f)*g