13、遇到右括号‘)’(不入栈),出栈‘-’,出栈‘(’(不添加到后缀表达式中) 23456+-
14、遇到‘/’,栈顶为‘*’, ‘/’优先级大于‘*’,将‘*’出栈 23456+-*
15、遇到操作时7,添加到后缀表达式中 23456+-*7
16、把栈中剩下的符号都出栈 23456+-*7/+
代码实现:
char* postfix_expression(string str) { char *temp=new char(100); int j=0; for(int i=0; i<str.size(); i++) { if(str[i]>='0' && str[i]<='9') temp[j++]=str[i]; else { if(str[i]==')') { while(S_c.top()!='(') { temp[j++] = S_c.top(); S_c.pop(); } S_c.pop(); } //如果符号是*或/高优先级,弹出所有*和/ else if(str[i]=='*'||str[i]=='http://www.likecs.com/') { if(!S_c.empty()) if(S_c.top()=='*'||S_c.top()=='http://www.likecs.com/') { temp[j++] = S_c.top(); S_c.pop(); } S_c.push(str[i]); } //如果符号是+或-低优先级,弹出所有*/+- else if(str[i]=='+'||str[i]=='-') { if(!S_c.empty()) if(S_c.top()=='*'||S_c.top()=='http://www.likecs.com/'||S_c.top()=='+'||S_c.top()=='-') { temp[j++] = S_c.top(); S_c.pop(); } S_c.push(str[i]); } else S_c.push(str[i]); } } while(!S_c.empty()) { temp[j++] = S_c.top(); S_c.pop(); } return temp; }