中缀表达式转换后缀表达式(机算)

中缀表达式转换为后缀表达式:左优先原则(和机算结果一致)(算法的确定性)
后缀表达式从左往右扫描,
用栈实现后缀表达式:
用栈实现前缀表达式的计算,
1.从左往右扫描下一个元素,知道处理完所有元素
2.若扫描到操作数则压入栈,并回到1;否则执行3
3.若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到1;
补充弹出,先出栈的是右操作数,后出栈的是左操作数

初始化一个栈,用于保存暂时还不能确定运算顺序的运算符。

从左到右处理各个元素,知道末尾。可能遇到三种情况:

  1. 遇到操作数。直接加入后缀表达式。
  2. 遇到界限符。遇到‘(’直接入栈;遇到‘)’则一次弹出栈内运算符并加入后缀表达式,直到弹出‘(’为止。注意:‘(’不加入后缀表达式。
  3. 遇到运算符。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到‘(’或栈空则停止。之后再把当前运算符入栈。

按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。

你可能感兴趣的:(数据结构)