数据结构——从中缀向后缀转换表达式
来源:互联网 发布:百度统计数据导出 php 编辑:程序博客网 时间:2024/05/22 00:10
第一次看题,实在没看懂,然后就去百度逆波兰表达式,结果百度百科里有把中缀表达式改为后缀表达式的算法
所以直接就写了出来
#include "stdio.h"#include "string.h"#include "stdlib.h"typedef struct stack{ char *base; char *top;}stack;int pre(char sign){ switch (sign) { case '+': case '-': return 1; break; case '*': case '/': return 2; break; case '^': return 3; break; default: return 0; break; }}int main(void){ stack sign; int n,i; char expre[100]; scanf("%d",&n); while (n--) { sign.base=(char*)malloc(100*sizeof(char)); sign.top=sign.base+1; *sign.base='#'; scanf("%s",expre); for (i=0; expre[i]!='#'; i++) { if (expre[i]=='(') { *sign.top++=expre[i]; } else if(expre[i]==')'){ while (*(sign.top-1)!='(') { printf("%c",*(sign.top-1)); sign.top--; } sign.top--; } else if (expre[i]=='+'||expre[i]=='-'||expre[i]=='*'||expre[i]=='/'||expre[i]=='^'){ while (((*(sign.top-1)==expre[i])&&(expre[i]=='^'))?(pre(*(sign.top-1))>pre(expre[i])):(pre(*(sign.top-1))>=pre(expre[i]))) { printf("%c",*(sign.top-1)); sign.top--; } *sign.top++=expre[i]; } else printf("%c",expre[i]); } while (sign.top!=sign.base+1) { printf("%c",*(sign.top-1)); sign.top--; } printf("\n"); } return 0;}
提交到网教后,最后一个案例WA了
看了几遍程序,没看出啥毛病,就也没管
后来才知道,a+b+c应该转为ab+c+;而a^b^c要转为abc^^
改了之后,就AC了
- 数据结构——从中缀向后缀转换表达式
- 从中缀向后缀转换表达式
- 6.从中缀向后缀转换表达式
- 4.从中缀向后缀转换表达式
- [栈和队列]从中缀向后缀转换表达式
- 【数据结构】中缀表达式转换后缀表达式
- 【数据结构】中缀表达式转换为后缀表达式
- 中缀表达式转换为后缀表达式-数据结构
- 表达式 中缀 后缀 转换
- 数据结构:中缀表达式如何转换为后缀表达式
- 《数据结构和算法》之中缀表达式、后缀表达式转换
- 【数据结构】中缀表达式转换后缀表达式(逆波兰式)
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 【数据结构】中缀表达式构造二叉树转换成后缀表达式
- Java数据结构06----中缀表达式转换为后缀表达式
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- 中缀表达式转换后缀表达式
- <c:when> <c:otherwise> <c:choose> 嵌套 遍历 jstl
- $.ajax的一些总结
- 进程和线程的区别和联系
- 央视炮轰信用卡全额罚息:透支11万5年后还44万
- duv 绝对置顶、置底、置左、置右方法
- 数据结构——从中缀向后缀转换表达式
- 一滴泪水能够承载多少的爱?
- JavaScript倒计时跳转或后退
- websvn的安装和配置
- 第十周上机任务项目6:打豆豆改写任务1
- 假如女人是一种编程语言
- ios开发图形绘制
- 笑着笑着就哭了,睡着睡着就痛了:QQ伤感日志
- 数据结构——组装齿轮问题