目录

一、熟悉的算数表达式

二、波兰数学家的灵感

三、中缀、后缀、前缀表达式

中缀转后缀的手算方法:

后缀表达式的计算(手算):

后缀表达式的计算(机算):

中缀转前缀的手算方法:

前缀表达式的计算(机算):

四、总结


 

一、熟悉的算数表达式

数据结构笔记——栈的应用(表达式求值)

由三个部分组成:操作数运算符界限符

界限符是必不可少的,反映了计算的先后顺序

 

二、波兰数学家的灵感

可以不用界限符也能无歧义地表达运算顺序

逆波兰表达式=后缀表达式、波兰表达式=前缀表达式

 

三、中缀、后缀、前缀表达式

中缀表达式:运算符在两个操作数中间。a + b、a + b - c、a + b - c * d

后缀表达式:运算符在两个操作数后面。a b +、a b + c -、a b + c d * -

前缀表达式:运算符在两个操作数前面。+a b 、- + a b c、- + a b  * c d

 

中缀转后缀的手算方法:

①确定中缀表达式中各个运算符的运算顺序

②选择下一个运算符,按照[左操作数 右操作数 运算符]的方式组合成一个新的操作数

③如果还有运算符没被处理,就继续②

数据结构笔记——栈的应用(表达式求值)

 

数据结构笔记——栈的应用(表达式求值)

数据结构笔记——栈的应用(表达式求值)

左优先原则,不要FreeStyle,保证手算和计算结果相同

“左优先”原则:只要左边的运算符能先计算,就优先算左边的,保证运算顺序唯一

数据结构笔记——栈的应用(表达式求值)

后缀表达式的计算(手算):

从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数

注:两个操作数的左右顺序

数据结构笔记——栈的应用(表达式求值)

数据结构笔记——栈的应用(表达式求值)

 

后缀表达式的计算(机算):

用找实现后缀表达式的计算

①从左往右扫描下一个元素,直到处理完所有元素

②若扫描到操作数则压入栈,并回到①,否则执行③

③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①

注:先出栈的是“右操作数”,若表达式合法,则最后栈中只会留下一个元素,就是最终结果

 

中缀转前缀的手算方法:

①确定中缀表达式中各个运算符的运算顺序

②选择下一个运算符,按照【运算符 左操作数 右操作数】的方式组合成一个新的操作数

③如果还有运算符没被处理,就继续②

“右优先”原则:只要右边的运算符能先计算,就优先算右边的

数据结构笔记——栈的应用(表达式求值)

 

前缀表达式的计算(机算):

用栈实现前缀表达式的计算:

①从右往左扫描下一个元素,直到处理完所有元素

②若扫描到操作数则压入栈,并回到①;否则执行③

③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①

注:先出栈的是“左操作数”

 

四、总结

数据结构笔记——栈的应用(表达式求值)

 

相关文章:

  • 2021-07-07
  • 2022-12-23
  • 2021-08-09
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-30
猜你喜欢
  • 2021-11-06
  • 2021-05-02
  • 2022-12-23
  • 2022-12-23
  • 2018-12-25
  • 2021-09-28
  • 2021-11-01
相关资源
相似解决方案