【小白友好】中缀表达式转换后缀表达式之从心法则

中缀表达式转换后缀表达式的三种方法

  • 1.利用栈
  • 2.加括号法
  • 3.从心法

中缀表达式 A+B*(C-D)-E/F 所对应的后缀表达式为 ABCD-*+EF/-
我在学习过程中总结了三种方法,以我个人觉得难易程度从高到低排序,当然我建议按顺序阅读,更有利于明白转换原理

1.利用栈

基本原则:由左至右依次扫描中缀表达式,其中

  • 不属于符号直接输出
  • 符号入栈
    • 如果是左括号,直接入栈
    • 如果是右括号,右括号会匹配走左括号,()一起不在栈内。在右括号拐走左括号之前,应将()内数据出栈输出
    • 如果是“ + - * / ”等符号,栈顶符号的优先级若大于等于即将入栈的符号,则输出栈顶符号;再将新的栈顶符号与即将入栈的符号进行优先级比较
  • 栈内若有剩余符号,则依次出栈输出
    【小白友好】中缀表达式转换后缀表达式之从心法则_第1张图片

2.加括号法

本方法包括三步:加括号,移号,去括号
②是在表达式①的基础上加括号
③的每一行都是重复移号和去括号这两步
我用不同颜色的笔标明了符号对应的括号颜色,需要注意的是,相同颜色的符号应该移到同颜色的括号的后边
【小白友好】中缀表达式转换后缀表达式之从心法则_第2张图片

3.从心法

这个是我在上学的时候发现的超简单的方法,猴子看了都说内行
【小白友好】中缀表达式转换后缀表达式之从心法则_第3张图片

你可能感兴趣的:(数据结构,数据结构,算法)