《后缀表达式例题.docx》由会员分享,可在线阅读,更多相关《后缀表达式例题.docx(2页珍藏版)》请在优知文库上搜索。
1、后缀表达式例题后缀表达式(也称为逆波兰表示法)是一种数学表达式表示方法,它以操作符之后的所有元素作为操作数。例如,中缀表达式,23可以转换为后缀表达式“23+”。下面是一个关于后缀表达式的例题:问题:将中缀表达式”2+3*(41)/5”转换为后缀表达式。解答:1 .首先,将中缀表达式中的数字和操作符分别列出。数字:2、3、4、1、5操作符:+、*、/2 .从左到右遍历中缀表达式,并将数字和操作符分别放入两个栈中。3 .当遇到左括号时,将左括号之前的位置出栈,直到遇到右括号为止。这些位置之间的元素形成一个子表达式。4 .对于当前位置的元素,如果它是一个数字,则将其出栈并输出。如果它是一个操作符,
2、则将栈顶的两个数字相应用该操作符进行运算,并将结果输出。5 .重复步骤4直到表达式结束。按照上述步骤,我们可以将表达式”2+3*(41)/5”转换为后缀表达式:1.将数字和操作符分别放入两个栈中:数字栈:2、3、4、1、5操作符栈:+、*、/2.遍历表达式:当前位置是,2,数字,出栈并输出。.当前位置是操作符,将栈顶的两个数字相加得到“2+3=5”,出栈并输出。.当前位置是3数字,出栈并输出。当前位置是操作符,将栈顶的两个数字相乘得到”3*4=12,出栈并输出。.当前位置是(“,左括号,将位置T入栈。.当前位置是4,数字,入栈。当前位置是右括号之前的操作符),将栈顶的两个数字相减得到“4-1=3”,出栈并输出。此时,,(前面的数字应该是4,所以出栈u4%.当前位置是“/“(右括号之前的操作符),将栈顶的两个数字相除得到“3/5=0.6,出栈并输出。此时,前面的数字应该是n3r,所以出栈,3,o由于前面的数字已经被处理完毕,所以将T出栈。当前位置是)“,已经处理完毕,跳过。目前栈中的数字是23和5,分别出栈并输出。