中缀表达式转后缀表达式:详解扫描 'n' 时栈元素
在将中缀表达式转换为后缀表达式的过程中,栈中的元素会按照操作符的优先级进行处理。假设栈初始为空,我们来看一下转换的过程:
-
扫描到 'x' 时,将其直接输出到后缀表达式中。 栈:空 后缀表达式:x
-
扫描到 '+' 时,由于栈为空,或者栈顶元素是左括号 '(', 所以将 '+' 直接入栈。 栈:+ 后缀表达式:x
-
扫描到 'y' 时,将其直接输出到后缀表达式中。 栈:+ 后缀表达式:xy
-
扫描到 '' 时,将 '' 入栈。 栈:*+ 后缀表达式:xy
-
扫描到 '(' 时,将 '(' 入栈。 栈:(*+ 后缀表达式:xy
-
扫描到 'z' 时,将其直接输出到后缀表达式中。 栈:(*+ 后缀表达式:xyz
-
扫描到 '-' 时,由于栈顶元素是 '', '' 的优先级大于 '-', 所以将 '' 出栈并输出,然后将 '-' 入栈。 栈:-+ 后缀表达式:xyz
-
扫描到 'm' 时,将其直接输出到后缀表达式中。 栈:-+ 后缀表达式:xyz*m
-
扫描到 '/' 时,将 '/' 入栈。 栈:/-+ 后缀表达式:xyz*m
-
扫描到 'n' 时,将其直接输出到后缀表达式中。 栈:/-+ 后缀表达式:xyz*mn
-
扫描到 '+' 时,由于栈顶元素是 '/', '/' 的优先级大于 '+', 所以将 '/' 出栈并输出,然后将 '+' 入栈。 栈:+- 后缀表达式:xyz*mn/
-
扫描到 'o' 时,将其直接输出到后缀表达式中。 栈:+- 后缀表达式:xyz*mn/o
-
扫描到 ')' 时,不断将栈顶元素出栈并输出,直到遇到左括号 '(', 将其出栈并丢弃。 栈:+ 后缀表达式:xyz*mn/o-
-
扫描到 '-' 时,将 '-' 入栈。 栈:-+ 后缀表达式:xyz*mn/o-
-
扫描到 'p' 时,将其直接输出到后缀表达式中。 栈:-+ 后缀表达式:xyz*mn/o-p
最终,当扫描到 'n' 时,栈中的元素依次是 '-+'。请注意,后缀表达式的输出是:xyz*mn/o-p。
原文地址: https://www.cveoy.top/t/topic/baL6 著作权归作者所有。请勿转载和采集!