堆栈应用:表达式求值

回忆:应用堆栈实现后缀表达式求值的基本过程:

  • 从左到右读入后缀表达式的各项(运算符或运算数)
  1. 运算数:入栈;
  2. 运算符:从堆栈中弹出适当数量的运算数,计算并结果入栈;
  3. 最后,堆栈顶上的元素就是表达式的结果值。

中缀表达式求值

基本策略:将中缀表达式转换为后缀表达式,然后求值

如何将中缀表达式转换为后缀?

观察一个简单例子:2+9/3-5   ->  2 9 3 / + 5 -

  1. 运算数相对顺序不变
  2. 运算符号顺序发生改变
  • 需要存储“等待中”的运算符号
  • 要将当前运算符号与“等待中”的最后一个运算符号比较

有括号怎么办?

【例】a*(b+c)/d=?

浙江大学数据结构(2.2.4堆栈应用:表达式求值)

浙江大学数据结构(2.2.4堆栈应用:表达式求值)

浙江大学数据结构(2.2.4堆栈应用:表达式求值)

堆栈的其他应用:

  • 函数调用及递归实现
  • 深度优先搜索
  • 回溯算法

相关文章:

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