先看一个算术题 :(3+4)*5-6=29
前缀表达式 -*+3456
中缀表达式
(3+4)*5-6
你会算的后缀表达式 34+5*6-
利用栈的特性来运算表达式,当前我只拿到了(3+4)*5-6,让我求它的前缀和后缀。
求后缀口诀:
1:从左到右看,数字忙显示,符号快进栈,大哥排最前,小弟来了一起出去干。
2:括号也进栈,回括就解散,中间的出栈,它俩全玩完!
(3+4)*5-6 套入口诀
栈(横着放左边栈低,右边栈顶):[] 这个是表示栈的存放值
后缀显示的结果:“” 这个表示当前显示的结果值
上面两行绿色字分别记录下面的计算结果,一个记录当前栈,一个记录最后显示的结果
第一遇到(
“括号也进栈” 。当前:[(],“”
第二遇到3
“数字忙显示”。当前:[(],“3”
第三遇到+
“符号快进栈”。当前:[(+],“3”
第四遇到4
“数字忙显示”。当前:[(+],“34”
第四遇到 )
“回括就解散,中间的出栈,它俩全玩完”。回括号进栈 [(+)],“34” 。遇到回括号,那么括号中间的就出栈(出栈就是显示),括号两个解散了,不要了(它俩全玩完),当前:[],“34+”
第五遇到*
“符号快进栈”。当前:[*],“34+”
第六遇到5
“数字忙显示”。当前:[*],“34+5”
第七遇到-
“符号快进栈,大哥排最前,小弟来了一起干”。栈里最上面是*,来了一个地位低的-号,当前大哥*带着后面小弟一起出去(这个题*后面还没有其他+-小弟,如果有一起顺序出去),[],“34+5*” 变这样了,出去后,栈空了,- 就进栈了。当前:[-],“34+5*”
第八遇到6
“数字忙显示”。当前:[-],“34+5*6”
最后没有了,栈里的陆续出栈
最终结果:34+5*6-
求前缀口诀:
1:从右到左看,数字忙进栈,符号快显示,全都往左站。
2:括号忽略掉,数字排排站,按顺序出栈,继续靠左站。
(3+4)*5-6 套入口诀
暂时不给详细解法,自己动手先看看。
后续给解法。
结果是:-*+3456
是不是口诀1的符号全部往左站,数字从右进栈是6543,出栈就是3456,“继续靠左站”贴着符号继续排列。结果如上了!