中缀转后缀
来源:互联网 发布:php 工厂模式 编辑:程序博客网 时间:2024/06/05 19:12
#include<iostream>
#include<stack>
using namespacestd;
int change1(char ch)
{
return ch-'0';
}
int change2(char ch)
{
if(ch=='+')return 1;
if(ch=='-')return 1;
if(ch=='*')return 2;
if(ch=='/')return 2;
elsereturn 3;
}
string conversion(string s,string str,stack<char> ss)
{
int i=0;
while(i!=s.length())
{
if(s[i]==')')
{
while(ss.top()!='(')
{
str+=ss.top();
ss.pop();
}
if(ss.top()=='(') ss.pop();
i++;
}
if(s[i]!='+'&&s[i]!='-'&&s[i]!='*'&&s[i]!='/'&&s[i]!='('&&s[i]!=')') str+=s[i];
else
{
if(ss.empty()) ss.push(s[i]);
else
{
while(change2(ss.top())>=change2(s[i])&&ss.top()!='(')
{
str+=ss.top();
ss.pop();
if(ss.empty())break;
}
ss.push(s[i]);
if(change2(ss.top())<change2(s[i]))
{
ss.push(s[i]);
}
}
}
i++;
}
while(!ss.empty())
{
str+=ss.top();
ss.pop();
}
return str;
}
int main()
{
string s,str;
cin>>s;
stack<char> ss;
str=conversion(s,str,ss);
cout<<str<<endl;
return0;
}
- 中缀转后缀&后缀求值
- c 中缀转后缀
- 中缀转后缀
- 中缀转后缀表达式
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀求值
- 表达式中缀转后缀
- Nyoj467【中缀转后缀】
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀
- 中缀转后缀表达式
- 中缀转后缀
- Digit fifth powers
- leetcode 59. Spiral Matrix II
- 安卓PSS与RSS介绍
- 83. Remove Duplicates from Sorted List
- hibernate 中注解 一对多 主键中mappedBy的具体使用及其含义
- 中缀转后缀
- DP---Best Time to Buy and Sell Stock
- 数据结构 (C语言)顺序表的基本操作
- android实现miui指示器的效果
- CI框架随记2
- 【iOS】UISearchBar修改右边取消按钮的方法
- tftp的问题
- js中实现获取当前超链接
- PackageManager使用