处理中固定到后缀表达式转换中的括号
将中固定表达式转换为后缀表达式涉及处理括号。括号可以引入多层优先考虑因素,必须解决这些问题以确保正确计算。
在中固定表达式中,括号可以充当改变运算顺序的分组元素。例如,表达式“2 3 4”的计算结果为 14,而表达式“(2 3) 4”的计算结果为 20,因为括号强制加法发生在乘法之前。
为了处理转换中的括号,我们需要调整逻辑如下:
// opening ( if (in_fix.peek().type == 4) { post_fix.push(in_fix.pop()); } //closing ) if(in_fix.peek().type == 5){ while(!(post_fix.isEmpty() || post_fix.peek().type == 4)){ postfixstr.append(post_fix.pop()); } if (post_fix.isEmpty()) ; // ERROR - unmatched ) else post_fix.pop(); // pop the ( in_fix.pop(); // pop the ) }
遇到空位时括号,它被推入堆栈。当遇到右括号时,只要堆栈包含非左括号的元素,就会处理该堆栈。这些元素被附加到后缀字符串。一旦堆栈为空或者当前元素是左括号,右括号及其对应的左括号就会从堆栈和中固定堆栈中弹出,确保括号内表达式的优先级得以维持。
以上是括号如何影响中缀到后缀表达式的转换?的详细内容。更多信息请关注PHP中文网其他相关文章!