从后缀转换为中缀

use*_*979 0 algorithm

将后缀转换为中缀的好算法是什么?我搜索和搜索但我只获得从中缀转换为后缀的算法.它们将是相当类似的算法正确吗?我还想加入括号.例如,(((13-1)/ 2)(3 + 5)).谢谢!

Ski*_*izz 5

这是后缀版本: -

13 1 - 2 / 3 5 + *
Run Code Online (Sandbox Code Playgroud)

要进行转换,将其解析为普通的后缀解析器,但将元素作为字符串存储在堆栈中,而不是作为值:

"13"
"1"
"-"
Run Code Online (Sandbox Code Playgroud)

当你得到一个像上面这样的运算符时,转换为单个字符串并在其周围加上括号: -

"(13-1)"
Run Code Online (Sandbox Code Playgroud)

继续: -

"(13-1)"
"2"
"/"
Run Code Online (Sandbox Code Playgroud)

变为: -

"((13-1)/2)"
Run Code Online (Sandbox Code Playgroud)

继续: -

"((13-1)/2)"
"3"
"5"
"+"
Run Code Online (Sandbox Code Playgroud)

变为: -

"((13-1)/2)"
"(3+5)"
Run Code Online (Sandbox Code Playgroud)

最后:-

"((13-1)/2)"
"(3+5)"
"*"
Run Code Online (Sandbox Code Playgroud)

结束为: -

"((13-1)/2)*(3+5)"
Run Code Online (Sandbox Code Playgroud)

您可以将"*"视为特殊情况,并从组合版本中省略它.