栈—— 表达式转换
来源:互联网 发布:图像分类算法matlab 编辑:程序博客网 时间:2024/06/01 08:57
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
输入格式:
输入在一行中给出不含空格的中缀表达式,可包含+
、-
、*
、\
以及左右括号()
,表达式不超过20个字符。
输出格式:
在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。
输入样例:
2+3*(7-4)+8/4
输出样例:
2 3 7 4 - * + 8 4 / +
样例输入与输出:
序号输入输出12+3*(7-4)+8/42 3 7 4 - * + 8 4 / +2((2+3)*4-(8+2))/52 3 + 4 * 8 2 + - 5 /31314+25.5*121314 25.5 12 * +4-2*(+3)-2 3 *5123123
#include<bits/stdc++.h>using namespace std;int main(){ char a[25]; gets(a); int tmp=0; int flag=0; stack<char> ch; int i; for(i=0;a[i]!='\0';i++) { char c=a[i]; if((c>='0'&&c<='9')||c=='.') { if(c>='0'&&c<='9') { if(tmp==0&&flag==0) { cout<<c; tmp=1; } else if((a[i-1]>='0'&&a[i-1]<='9')||a[i-1]=='.') cout<<c; else cout<<" "<<c; } else cout<<c;//c=='.',有非整数出现 } else if(c=='+'||c=='-') { if(i==0||(!(a[i-1]>='0'&&a[i-1]<='9')&&a[i-1]!=')'))//运算数前有正负号 { if(c=='-') { if(i==0) flag=1; else cout<<" "; cout<<c<<a[i+1]; i++; } } else { while(!ch.empty()&&ch.top()!='(') { cout<<" "<<ch.top(); ch.pop(); } ch.push(c); } } else if(c=='/'||c=='*') { if(ch.top()=='/'||ch.top()=='*') { while(!ch.top()=='(') { cout<<" "<<ch.top(); ch.pop(); } ch.push(c); } else ch.push(c); } else if(c=='(') ch.push(c); else if(c==')') { ch.push(c); while(1) { if(ch.top()==')') ch.pop(); if(ch.top()=='(') { ch.pop(); break; } else { cout<<" "<<ch.top(); ch.pop(); } } } } while(1) { if(ch.empty()) break; if(ch.top()=='(') ch.pop(); else { cout<<" "<<ch.top(); ch.pop(); } } return 0;}
阅读全文
0 0
- 栈—— 表达式转换
- C++栈的应用——后缀表达式求值、中缀表达式到后缀表达式的转换
- PTA 7-1 表达式转换——表达式树
- LINTCODE——将表达式转换为逆波兰表达式
- 后缀表达式 (1) ——中缀表达式与后缀表达式的手动转换
- 后缀表达式(4)-——中缀表达式到后缀表达式的转换,递归实现
- 中缀表达式转换成后缀表达式 -- 栈
- 算术表达式的转换 栈
- 数据结构——从中缀向后缀转换表达式
- 算术表达式的转换——算术表达树
- 表达式转换
- 表达式转换
- [深入学习C#]LINQ查询表达式详解(2)——查询表达式的转换
- C++堆栈 如何把中缀表达式转换为后缀表达式——读书笔记
- 中序表达式转换成后序表达式问题(栈的应用)
- 利用栈将 (中缀表达式) 转换成 (后缀表达式)
- 利用栈将中缀表达式转换成后缀表达式
- 中缀表达式转换为后缀表达式(栈的使用)
- 六级_第二天
- 回溯法输出字符串入栈出栈的全部可能序列
- 【opencv学习笔记.1】操作像素画圆
- 委托、泛型委托等
- Uva1395 Slim Span(最小生成树)
- 栈—— 表达式转换
- java并发基础(三)--- 任务执行(Executor的使用)
- 猜数字游戏
- oracle主键和索引
- HNOI-2004 打鼴鼠
- SPFA——热浪Heat Wave、捉迷藏Hide and Seek、电车
- XPermissionUtils使用记录,动态申请权限
- 一图文看懂公钥私钥
- mos上的几篇关于windows 操作系统的Oracle文章