一、中缀表达式转后缀表达式(机算)

初始化一个栈,用于保存暂时还不确定运算顺序的运算符。

从左到右处理各个元素,直到末尾。可能遇到三种情况:

①遇到操作数。直接加入后缀表达式。

②遇到界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。

注:“(”不加入后缀表达式。

③遇到运算符。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。

例:

数据结构笔记——栈的应用(二)

 图示

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

 

二、中缀表达式的计算(用栈实现)

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

初始化两个栈,操作数栈和运算符栈

若扫描到操作数,压入操作栈

若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)

 例:

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

数据结构笔记——栈的应用(二)

三、总结

数据结构笔记——栈的应用(二)

相关文章:

  • 2022-12-23
  • 2021-11-22
  • 2021-12-17
  • 2022-12-23
  • 2021-10-27
  • 2021-05-27
  • 2021-10-30
  • 2021-07-22
猜你喜欢
  • 2021-05-05
  • 2022-12-23
  • 2021-05-10
  • 2021-08-03
  • 2021-05-24
相关资源
相似解决方案