校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 数据结构 >
题目

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

A.+(*-

B.+(-*

C./+(*-*

D./+-*

解答

正确答案是 B

1.首先 / 入栈
2.+入栈,并把/挤出栈 。此时栈中只有/
3.( 入栈。入栈时 级别最高,所以直接入栈。但是入栈后级别最低。此时栈中只有(+
4 。* 级别高于( 。 所以*入栈,此时栈中有*(+
5. -入栈,因为-低于*,所以-把*挤出栈,此时栈中有-(+
6.*优先级高于-,所以*直接入。所以最终栈中从上到下为 *-(+ 从下到上为+(-×

C 5条回复 评论
Ronin8174

复习复习栈的知识

发表于 2021-02-22 12:20:09
0 0
五分i

正确答案是,B

发表于 2021-02-22 11:28:19
0 0
毛大军

后缀表达式的符号栈中,永远是优先级低的符号在栈底。可直接排除acd。

发表于 2018-10-13 14:18:45
0 0
一零计划

注意:扫描到F时
顺序:栈底-->顶。
规则:数字直接输出;
          符号,比较优先级,若是右括号或者优先级不高于栈顶元素的,栈顶元素出栈并输出,当前符号进栈。
例题的后缀表达式:ab/cd*ef*-g/+

发表于 2018-10-13 14:18:31
0 0
橘子汽水

依次把符号弹入栈  后面的符号比前面的符号优先级低  则把前面的符号弹出栈的 先入栈/ +号比/优先级低  则/弹出栈的 然后弹入左括号 括号优先级最高 必须等到右括号才会出栈   然后弹入*  -号比乘号优先级低  *号弹出栈 然后栈中再弹入*号的
1 /
2 + (
3 + (  *
4 + ( - *

发表于 2021-02-22 12:19:35
0 2