把所有操作数取出来排列为abcde
然后根据原算式的运算顺序把操作符依次写在后面依次为/+*+
将中缀表达式转换为后缀表达式的算法思想:
开始扫描,遇到数字,加入后缀表达式,遇到运算符:
b. 若为 ')'则依次把栈中的的运算符加入后缀表达式中,直到出现'('从栈中删除'(' ;
c. 若为 除括号外的其他运算符, 当其优先级高于除'('以外的栈顶运算符时直接入栈。否则从栈顶开始依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先級低的或者遇到了一个左括号为止
·当扫描的中缀表达式结束时,栈中的的所有运算符出栈;
假设栈初始为空将中缀表达式 a/b+(c*d-e*f)/g轉换为等价后缀表达式的过程中,当扫描到f时栈中的元素依次是 ()
2.+入栈,并把/挤出栈 此时栈中只有/
3.( 入栈。入栈时 级别最高所以矗接入栈。但是入栈后级别最低此时栈中只有(+
4 。* 级别高于( 所以*入栈,此时栈中有*(+
5. -入栈因为-低于*,所以-紦*挤出栈此时栈中有-(+
6.*优先级高于-,所以*直接入所以最终栈中从上到下为 *-(+ 从下到上为+(-×
后缀表達式的符号栈中,永远是优先级低的符号在栈底可直接排除acd。
顺序:栈底-->顶
符号,比较优先级若是右括号或者优先级不高于栈顶元素的,栈顶元素出栈并输出当前符号进栈。
依次把符号弹入栈 后面的符号比前面的符号优先级低 则把前面的符号弹出栈的 先入栈/ +号比/优先级低 则/弹出栈的 然后弹入左括号 括号优先级最高 必须等到右括号才会出栈 然后弹入* -号比乘号优先级低 *号弹出栈 然后栈中再弹入*号的
2009年下半年程序员考试上午真题(參考答案)
考试中心《2009年下半年程序员考试上午真题(参考答案)》在线考试
试卷年份2009年下半年
B(仅供参考欢迎评论交流)
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。