首页 > 代码库 > 郁闷的C小加(一)
郁闷的C小加(一)
/************************************************************************* > File Name: 1.cpp > Author: > Mail: > Created Time: 2014年08月03日 星期日 08时27分22秒 ************************************************************************/#include<iostream>#include <stack>using namespace std;int book(char c1){ if(c1==‘+‘||c1==‘-‘) return 1; if(c1==‘*‘||c1==‘/‘) return 2; return -1;}int main(){ int num; stack<char> s; string str; cin>>num; while(num--) { str =""; cin>>str; str.append(1,‘#‘); for(unsigned int i =0;i<str.length();i++) { switch (str[i]) { case ‘#‘: while(!s.empty()) { cout<<s.top(); s.pop(); } break; case ‘(‘: s.push(‘(‘); break; case ‘)‘: while(s.top()!=‘(‘) { cout<<s.top(); s.pop(); } s.pop(); break; default: if(str[i]>=‘0‘&&str[i]<=‘9‘) cout<<str[i]; else { if(s.empty()) { s.push(str[i]); } else if(book(s.top()) >= book(str[i])) { while(!s.empty()&&book(s.top())>=book(str[i])) { cout<<s.top(); s.pop(); } s.push(str[i]); } else { s.push(str[i]); } } break; } } cout<<endl; } return 0;}
栈的应用,不过规则挺多的,浪费我好长时间。。参考这个http://blog.163.com/kevinlee_2010/blog/static/1698208202011102510740979/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。