做窗帘的效果图网站,网站建设职能绩效目标,做网站做哪个,php不用框架怎么做网站目录 一、定义
二、算法步骤
三、代码实现 一、定义 逆波兰表达式又叫做后缀表达式#xff0c;是一种没有括号#xff0c;并严格遵循“从左到右”运算的后缀式表达方法。 二、算法步骤
1、首先构造一个运算符栈#xff0c;此运算符在栈内遵循越往栈顶优先级越高的原则。 …目录 一、定义
二、算法步骤
三、代码实现 一、定义 逆波兰表达式又叫做后缀表达式是一种没有括号并严格遵循“从左到右”运算的后缀式表达方法。 二、算法步骤
1、首先构造一个运算符栈此运算符在栈内遵循越往栈顶优先级越高的原则。
2、读入一个用中缀表示的简单算术表达式为方便起见设该简单算术表达式的右端多加上了优先级最低的特殊符号“#”。
3、从左至右扫描该算术表达式从第一个字符开始判断如果该字符是数字则分析到该数字串的结束并将该数字串直接输出。
4、如果不是数字该字符则是运算符此时需比较优先关系。
具体做法是将该字符与运算符栈顶的运算符的优先关系相比较。如果该字符优先关系高于此运算符栈顶的运算符则将该运算符入栈。若不是的话则将栈顶的运算符从栈中弹出直到栈项运算符的优先级低于当前运算符将该字符入栈。
5、重复步骤12直至扫描完整个简单算术表达式确定所有字符都得到正确处理便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。 三、代码实现 中缀转后缀
根据算术计算的优先级将要依次实现的步骤用括号括起来然后将算术运算符移到最近的括号外。
然后把所有括号删除根据从左到右的顺序放入栈中遇到运算符就进行计算先拿出目前的栈顶元素为num2然后再拿出新的栈顶元素为num1然后让num1(运算符)num2进行计算将计算结果再放入栈内。 import java.util.Stack;private boolean isOperation(String s){ //判断是否为运算符if (s.equals()||s.equals(-)||s.equals(*)||s.equals(/)){return true;}return false;}public class Test {public int evalRPN(String[] tokens){StackIntegerstacknew Stack();for (String x:tokens){if (!isOperation(x)){stack.push(Integer.parseInt(x));}else {int num2stack.pop();int num1stack.pop();switch (x){case x:stack.push(num1num2);break;case -:stack.push(num1-num2);break;case *:stack.push(num1*num2);break;case /:stack.push(num1/num2);break;}}}return stack.pop();}}最后栈内只有一个元素这个元素就是这个运算表达式的结果。