nyoj 305 表达式求值 (栈实现)
2016-07-19 10:52
323 查看
#include<stdio.h> #include<stack> using namespace std; #include<string.h> int main() { int n; scanf("%d",&n); while(n--) { char g[310]; stack<char> f; stack<int> num; scanf("%s",g); int len=strlen(g); for(int i=0;i<len;i++) { if(g[i]=='(') { f.push(g[i]); } else if(g[i]>='0'&&g[i]<='9') { int v=0; while(g[i]>='0'&&g[i]<='9') { v=v*10+(g[i]-'0'); i++; } i--; num.push(v); } else if(g[i]=='d'&&g[i-1]=='d'||g[i]=='n'||g[i]=='x') { f.push(g[i]); } else if(g[i]==')') { if(f.top()=='(') { f.pop(); if(f.top()=='d'||f.top()=='n'||f.top()=='x') { int a=num.top();num.pop(); int b=num.top();num.pop(); int c; switch(f.top()) { case 'd': c=a+b; break; case 'x': if(a>b) c=a; else c=b; break; case 'n': if(a<b) c=a; else c=b; break; } num.push(c); f.pop(); } } } else if(g[i]==',') { continue; } } printf("%d\n",num.top()); num.pop(); } return 0; }
定义两个栈 分别储存字符与数据
循环判定 进行栈操作
最终得出结果
相关文章推荐
- 微信网页授权java实现
- T-SQL---多值模糊查询的处理
- jQuery插件stickup.js 源码解析初步
- 变长参数函数(转载)
- Oracle ORA-12519: TNS:no appropriate service handler found 解决
- LaTeX分文件编译教程
- JS操作JSON总结
- 总结Spring、Hibernate、Struts2官网下载jar文件
- 函数和指针
- jQuery监听回车事件
- MySQL统计函数记录——时间段统计
- eclipse快捷键
- 左右select选择 (jQuery实现)
- java安卓透明半透明设置
- iOS中几种数据持久化方案
- 关于用display:table让元素居中的小结
- 基于Kurento的WebRTC移动视频群聊技术方案
- java jdk 环境变量
- 扩展struts2的结果集StrutsResultSupport 自定义Result处理JSON
- ThreadLocal的正确用法