首页 > 代码库 > Infix to postfix 用stack模板,表达式没有括号
Infix to postfix 用stack模板,表达式没有括号
#include<stack>#include<iostream>#include<string>using namespace std;//优先级判断char compare(char opt, char si){ if((opt==‘+‘||opt==‘-‘)&&(si==‘*‘||si==‘/‘) return ‘<‘; else if(opt==‘#‘) return ‘<‘; return ‘>‘;}//判断是否为运算符bool isOp(char c){ if(c==‘+‘||c==‘-‘||c==‘*‘||c==‘/‘) return true; return false;}int main(){ stack<char>op; stack<char>num; op.push(‘#‘); num.push(‘#‘); string s; cin>>s; for(int i=0;i<s.size();i++) { if(!isOp(s[i])) num.push(s[i]); else { char c=compare(op.top(),s[i]); if(c==‘<‘) op.push(s[i]); else { num.push(op.top()); op.pop(); op.push(s[i]); } } } while(op.top()!=‘#‘) { num.push(op.top()); op.pop(); } string s1=""; while(num.top!=‘#‘) { s1=s1+num.top(); num.pop(); } for(int i=0;i<s1.size()/2;i++) { char temp=s1[i]; s1[i]=s1[s1.size()-1-i]; s1[s1.size()-1-i]=temp; } cout<<s1<<endl; return 0;}
Infix to postfix 用stack模板,表达式没有括号
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。