#include<iostream>
#include<stack>
#include<string>
#include<deque>
using namespace std; char compare(char tp, char op)
{
if (((tp == '+' || tp == '-') && (op == '*' || op == '/')) || (tp == '#'))
return '<';
else if (tp == '('&&op != ')')
return '<';
else if ((tp == '*' || tp == '/' || tp == '+' || tp == '-') && (op == '('))
return '<';
return '>';
} int main()
{
stack<char>num;
stack<char>oper; oper.push('#'); string s;
cin >> s; for (int i = 0; i<s.length(); i++)
{
if (s[i] == '0' || s[i] == '1' || s[i] == '2' || s[i] == '3' || s[i] == '4' || s[i] == '5' || s[i] == '6' || s[i] == '7' || s[i] == '8' || s[i] == '9')
num.push(s[i]);
else
{
char comp = compare(oper.top(), s[i]);
if (comp == '<')
oper.push(s[i]);
else if (comp == '>')
{
if (s[i] == ')')
{
while (oper.top() != '(')
{
num.push(oper.top());
oper.pop();
}
oper.pop();
}
else
{
num.push(oper.top());
oper.pop();
oper.push(s[i]);
}
}
}
} while (oper.top() != '#')
{
num.push(oper.top());
oper.pop();
} deque<char> d; while (num.size() != 0)
{
d.push_front(num.top());
num.pop();
} for (auto i = d.begin(); i != d.end(); i++)
cout << *i; cout << endl; return 0;
}

  

最新文章

  1. 游戏编程技巧 - Type Object
  2. python直接执行另一个文件中的代码
  3. WordPress博客网站fonts.useso加载慢解决办法
  4. 用PHP语言刷OJ题
  5. leetcode 36
  6. 欧拉计划(1~3)ps:以后看题一定要认真
  7. hadoop 2.6.0 yarn total memory metrics 不正常
  8. 转: Apache开启gzip
  9. Struts2【OGNL、valueStack】就是这么简单
  10. CODEVS3269混合背包+二进制优化
  11. Java 8 新特性之 Lambda表达式
  12. C# 正则表达式应用
  13. jasperreports+IReport 5.56,集成到Spring MVC4.0案例
  14. javaweb复习(一)
  15. [转]解决Error: That port is already in use.
  16. tensorflow学习3---mnist
  17. kali安装搜狗输入法
  18. [算法]Bobmer
  19. 对cnblogs.com的用户体验
  20. svn无法checkout大文件的解决办法

热门文章

  1. Help improve Android Studio by sending usage statistics to Google
  2. C# 无边框窗口实现拖动
  3. C# 语言规范_版本5.0 (第21章 附录C_参考资料)
  4. Linux双网卡NAT共享上网
  5. 消息队列 RabbitMQ 与 Spring 整合使用
  6. Redis 集群解决方案比较
  7. Fedora25
  8. linux安装GraphicsMagick
  9. 干货篇:揭开CSS盒模型神秘的面纱
  10. Java JDBC Batch