
1.准备好一个栈
2.当给出一个字符串 需要你将元素push的时候 如果这个字符是整数的话 可以直接输出
3.当遇到 *** 作符的时候,一定要比较 比较 比较 (重要的事情说三遍) 在 *** 作符的栈里面一定要满足一个条件 就是从顶到底优先级必须严格减小
4.接着就是对于括号的处理,如果遇到的是左括号,直接入栈 遇到右括号,不断取出栈顶元素,直到取到左括号
5.输出栈中的所有元素。
//逆波兰式
#include
using namespace std;
int youxian(char op)
{
if (op=='+' || op=='-')
{
return 1;
}
if(op=='*' || op=='/')
{
return 2;
}
if(op=='(')
{
return 0;
}
}
int main()
{
int num=0;
string s1="";
stackop;
string s;
s="2+4*8+(8*8+1)/3";
for(int i=0;iyouxian(op.top()))
{
op.push(s[i]);
}
else
{
while(youxian(s[i])<=youxian(op.top()))
{
s1+=op.top();
op.pop();
}
op.push(s[i]);
}
}
}
}
while(!op.empty())
{
s1+=op.top();
op.pop();
}
cout<
自己打的一段后缀表达式 还是比较好理解的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)