后缀表达式做计算器程序 (2)

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxjyg.html