📜  前缀到中缀转换(1)

📅  最后修改于: 2023-12-03 15:07:17.442000             🧑  作者: Mango

前缀到中缀转换

前缀表达式是一种将操作符写在操作数之前的表达式,例如:+ 2 3,这表示加法运算的两个操作数分别为2和3。与前缀表达式相对应的是后缀表达式,将操作符写在操作数之后,例如:2 3 +

前缀表达式不太易读,因为它们将操作符放在操作数之前,这使得表达式的阅读顺序很容易出错。相反,中缀表达式将操作符放在操作数之间,因此它们更容易理解和记忆。因此,我们需要将前缀表达式转换为中缀表达式,以便更好地理解和理解它们。

算法

前缀表达式转换为中缀表达式的算法如下:

  1. 从右至左扫描前缀表达式,对每个元素执行以下操作:
    • a. 如果元素是操作数,则将其推入栈中。
    • b. 如果元素是操作符,则从栈中弹出两个元素,将它们与操作符连接成一个字符串并推回栈中。
  2. 将最后一个元素从栈中弹出,即为中缀表达式。
代码示例

下面是使用Python编写的代码示例:

def prefix_to_infix(s):
    stack = []
    for ch in reversed(s):
        if ch.isalnum():
            stack.append(ch)
        else:
            op1 = stack.pop()
            op2 = stack.pop()
            stack.append('({}{}{})'.format(op1, ch, op2))
    return stack.pop()
示例

下面是一个示例:

s = '+2*35'
print(prefix_to_infix(s))

输出结果为:

(2+(3*5))
总结

前缀表达式经常用于解析算术表达式,在计算机科学领域中有广泛应用。但是,前缀表达式不太易懂,因此我们需要将其转换为中缀表达式以便更好地理解和记忆。通过上面给出的算法和代码,我们可以很容易地将前缀表达式转换为中缀表达式。