PAT DS 3-06 表达式转换
来源:互联网 发布:01背包问题贪心算法 编辑:程序博客网 时间:2024/06/05 19:38
各种细节考虑比较繁琐。
首先数有符号,要处理;其次用数组保存数更准确;然后左右括号要单独处理;再者栈顶指针初始用-1比0好,因为这样看栈顶就不用top-1了;还有,推出符号应该是循环找出所有符合条件的,因为可以推出的可能不止一个(不过最多2个(比如第一个case),因此栈只用2个单元);最后要把剩下的栈里操作符全推出了。
#include <stdio.h>#define debug printfchar st[2];int top=-1;int main(){freopen("in.txt", "r", stdin);char c;int first=1;char a[21];int i;while((a[0] = getchar())!=EOF){i=1;if(a[0]=='('){c = a[0];goto sw;}else if(a[0]=='+')i=0;while((c=getchar())!=EOF){if('0'<=c && c<='9' || c=='.')a[i++] = c;elsebreak;}a[i] = 0;if(first){printf("%s", a);first = 0;} elseprintf(" %s", a); sw:switch(c){case '(':st[++top] = '(';break;case ')':while(top>=0 && st[top]!='('){printf(" %c", st[top]);--top;}--top;c = getchar();goto sw;break;case '+':case '-':while(top>=0 && st[top]!='(') printf(" %c", st[top--]);st[++top]=c;break;case '*':case '/':while(top>=0 && (st[top]=='*' || st[top]=='/'))printf(" %c", st[top--]);st[++top]=c;break;default:goto end;break;}}end:while(top>=0){printf(" %c", st[top--]);}return 0;}
0 0
- PAT DS 3-06 表达式转换
- 表达式转换【PAT】
- PAT 表达式转换
- pat 表达式转换
- PAT表达式转换
- 浙大PAT 3-06. 表达式转换 (解题思路)
- [DS][Sort][PAT][PAT Judge]
- [DS][Hash][PAT][Hashing]
- PAT DS 3-09. 队列中的元素排序
- pat Data_stucture 表达式转换-栈的应用
- [DS][Tree][PAT][List Leaves]
- 3ds Max 2014的Maxscript中使用正则表达式
- 将3DS和DXF格式转换成XAML
- 将3DS和DXF格式转换成XAML
- 将3ds文件转换为.ser文件
- 3ds max 2014 中文 语言转换 win8
- PAT DS 3-05求链式线性表的倒数第K项
- PAT DS 4-09. 笛卡尔树
- 酌鞍教靡捅擦写谮韶稚陈烫丶荷挠
- NRPE: Command 'zccheck_mem' not defined
- STAF API Return Codes
- Android异步下载网络图片(其一
- Java注释规范整理
- PAT DS 3-06 表达式转换
- 分布式文件系统测试方法与测试工具
- win7 C盘扩容
- 【源码】物品展示必备代码(旋转与缩放代码)
- 华为面试题 及其自己的扩展
- 用js识别是否360浏览器
- html param
- sping3.1 配置完成后报错请求界面 org.springframework.web.servlet.DispatcherServlet noHandlerFound
- 各种函数各种语言执行时间