算术表达式中缀转换成后缀
来源:互联网 发布:数据库系统结构模型 编辑:程序博客网 时间:2024/04/29 22:14
#include<stdio.h>#include<string.h>#include<stack>using namespace std;int OP[7][7]{ 1,1,0,0,0,-1,1,// 以矩阵来表示 运算符之间的关系。 1,1,0,0,0,-1,1,// 1 表示 栈顶元算符比 刚刚下一个元算符 高级 可以运算 1,1,1,1,0,-1,1,// 0 表示 栈顶 运算符低级 就 将下一个 运算符入栈。 1,1,1,1,0,-1,1,// -1 表示 拥有 一对括号匹配 将 括号内容输出 0,0,0,0,0,-1,9, 1,1,1,1,9,-1,1, 0,0,0,0,0,9,2};int Name( char a ){int n;switch( a ){case '+': n=0; break;case '-': n=1; break;case '*': n=2; break;case '/': n=3; break;case '(': n=4; break;case ')': n=5; break;case '#': n=6; break;default : n=-1; }return n;}int Precede( char a, char b){int an1,an2;an1=Name(a);an2=Name(b);return OP[an1][an2];} int main(){char a[100];char Stack[100];int top;int len;printf("以#号结束、、、、\n"); scanf("%s",a);len=strlen(a);//a+b*printf("%d",len);top=-1;Stack[++top]='#';for( int i=0; i<len; ++i ){ if( Name(a[i])==-1 ) printf("%c",a[i]); else { switch( Precede(Stack[top],a[i]) ) { case 0: Stack[++top]=a[i]; break; case 9: printf("error\n"); break; case 1: printf("%c",Stack[top]); --top; while( Precede(Stack[top],a[i])==1 ) { printf("%c",Stack[top]); --top; } Stack[++top]=a[i]; break; case -1: while( Stack[top]!='(' ) { printf("%c",Stack[top]); top--; } top--; break;case 2: break; }}} return 0;}
0 0
- 算术表达式中缀转换成后缀
- 中缀表达式转换成后缀
- 将中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 将中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式
- 中缀表达式转换成后缀表达式 -- 栈
- 表达式 中缀 后缀 转换
- 中缀表达式转换成后缀表达式/计算后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- 中缀表达式转换后缀表达式
- ZCMU-1611-因子和
- .h头文件 .lib库文件 .dll动态链接库文件关系
- Linux下段错误以及调试方法
- 支持向量机核函数
- PHP生成雪花背景的验证码
- 算术表达式中缀转换成后缀
- 【JAVA 10.5】
- Hadoop 2.x版本的log在哪
- 字符串匹配
- Android运行时异常“Binary XML file line # : Error inflating class”
- 正则表达式
- 【JAVA 10.6】
- 连续第九十天
- CSS清除浮动