🏷️ 知识点:中缀转后缀

共 3 道相关题目

2012 年第 2 题 数据结构 选择题

已知操作符包括 +/()。将中缀表达式 a+b−a∗((c+d)/e−f)+g 转换为等价的后缀表达式 ab+acd+e/f−∗−g+ 时,用栈来存放暂时还不能确定运算次序的操作符,若栈初始为空,则转换过程中同时保存在栈中的操作符的最大个数是( )。

中缀转后缀

A. 5

B. 7

C. 8

D. 11

[tag_link]

正确答案:A表达式求值是栈的典型应用。中缀表达式不仅依赖千运算符的优先级,而且要处理括号。后缀表达式的运算符在表达式的后面且没有括号,其形式已经包含了运算符的优先级。所以从 中序转后序 需要用运算符进行处理,使其包含运算符优先级的信息,从而转换为后缀表达式的形式。


2014 年第 2 题 数据结构 选择题

假设栈初始为空,将中缀表达式 a/b+(c*d-e*f/ g转换为等价的后缀表达式的过程中,当扫描到f 时, 栈中的元素依次是()。

A.+(*-

B.+(一*

C. /+(*一*

D. /+ 一*

[tag_link]

正确答案:B

中序转后序的过程详见 此节 。


2024 年第 2 题 数据结构 选择题

表达式 x+y*(z-u)/v 的等价后缀是( )

中缀转后缀

A. xyzu-*v/+ B. xyzu-v/*+ C. +x/*y-zuv D. +x*y/-zuv

[tag_link]

正确答案:A

本题有两种解法:第一种是使用栈 将中序转后序。第二种方式是先将中序表达式转换为二叉树,然后再对二叉树进行后序遍历,得到后续表达式。这里建议使用第二种方式,对于选择题比较高效。