nyist oj 467 (中缀式变后缀式)
2012-08-10 07:09
169 查看
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=467
直接上代码:
直接上代码:
#include <cstdio> #include <cstring> using namespace std; const int N = 1001; char stack ; char op ; char s ; int top; int top_op; int compare(char a); void translate(); int main() { int t; scanf("%d", &t); while(t--) { translate(); } return 0; } int compare(char a) { switch(a) { case '+': case '-': return 1; case '*': case '/': return 2; case '(': return 0; default: return -1; } } void translate() { scanf("%s", s); int len = strlen(s) - 1; top = -1; top_op = -1; for(int i = 0; i < len; i++) { if('0' <= s[i] && s[i] <= '9' || s[i] == '.') { top++; stack[top] = s[i]; } else if(s[i] == '(') { top_op++; op[top_op] = s[i]; } else if(s[i] == ')') { while(op[top_op] != '(') { top++; stack[top] = ' '; top++; stack[top] = op[top_op]; top_op--; } top_op--; } else if(s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/') { top++; stack[top] = ' '; if(top_op != -1) { while(compare(s[i]) <= compare(op[top_op])) { top++; stack[top] = op[top_op]; top++; stack[top] = ' '; top_op--; } } top_op++; op[top_op] = s[i]; } } while(top_op != -1) { top++; stack[top] = ' '; top++; stack[top] = op[top_op]; top_op--; } top++; stack[top] = ' '; top++; stack[top] = '='; top++; stack[top] = '\0'; printf("%s\n", stack); }
相关文章推荐
- NYOJ 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- nyoj 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ_467 中缀式变后缀式
- NYOJ 467 中缀式变后缀式
- NYOJ-467 中缀式变后缀式
- nyoj 题目467 中缀式变后缀式
- NYOJ-467-中缀式变后缀式(模拟)
- NYOJ 467 中缀式变后缀式(栈)
- nyoj467 中缀式变后缀式
- 中缀式变后缀式(nyoj 467)
- nyist oj 36 最长公共子序列 (动态规划基础题)
- 中缀式变后缀式