数据结构–栈的应用–前中后缀表达式(后部分)
中缀表达式转后缀表达式(手算)
中缀转后缀\color{purple}中缀转后缀中缀转后缀的手算方法\color{purple}手算方法手算方法:
①确定中缀表达式中各个运算符的运算顺序\color{red}各个运算符的运算顺序各个运算符的运算顺序
②选择下一个运算符,按照「左操作数右操作数运算符」\color{red}「左操作数右操作数运算符」「左操作数右操作数运算符」的方式组合成一个新的操作数③如果还有运算符没被处理,就继续②
“左优先”原则\color{red}“左优先”原则“左优先”原则:只要左边的运算符能先计算,就优先算左边的
中缀表达式转后缀表达式(机算)
初始化一个栈,用于保存暂时还不能确定运算顺序的运算符\color{red}暂时还不能确定运算顺序的运算符暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况:
①遇到操作数\color{red}操作数操作数。直接加入后缀表达式。
②遇到界限符\color{red}界限符界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。注意:“(”不加入后缀表达式。
③遇到运算符\color{red}运算符运算符。依次弹出栈中优先级\color{purple}优先级优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。
∗/优先级高于+−\color{pink}*/优先级高于+-∗/优先级高于+−
按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。
中缀表达式的计算(用栈实现)
用栈实现\color{purple}用栈实现用栈实现中缀表达式的计算:
初始化两个栈,操作数栈\color{red}操作数栈操作数栈和运算符栈\color{red}运算符栈运算符栈
若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈\color{red}弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)
后缀表达式的计算(机算)
用栈实现\color{purple}用栈实现用栈实现后缀表达式的计算:
①从左往右扫描下一个元素,直到处理完所有元素②若扫描到操作数则压入栈,并回到①;否则执行③
③若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①
注意:
先出栈的是“右操作数”
栈用于存放当前暂时还不能确定运算次序的操作数
中缀表达式转后缀表达式(机算)
初始化一个栈,用于保存暂时还不能确定运算顺序的运算符\color{red}暂时还不能确定运算顺序的运算符暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况:
①遇到操作数\color{red}操作数操作数。直接加入后缀表达式。
②遇到KaTeX parse error: Invalid color: '界' at position 7: \color界̲限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式,直到弹出“(”为止。注意:“(”不加入后缀表达式。
③遇到运算符\color{red}运算符运算符。依次弹出栈中优先级高于或等于当前运算符的所有运算符,并加入后缀表达式,若碰到“(”或栈空则停止。之后再把当前运算符入栈。
按上述方法处理完所有字符后,将栈中剩余运算符依次弹出,并加入后缀表达式。
中缀表达式的计算(用栈实现)
栈实现\color{purple}栈实现栈实现中缀表达式的计算:
初始化两个栈,操作数栈\color{red}操作数栈操作数栈和运算符栈\color{red}运算符栈运算符栈若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈\color{red}弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)
中缀表达式的计算(用栈实现)
用栈实现\color{purple}用栈实现用栈实现中缀表达式的计算:
初始化两个栈,操作数栈\color{red}操作数栈操作数栈和运算符栈\color{red}运算符栈运算符栈若扫描到操作数,压入操作数栈
若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈\color{red}弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算,运算结果再压回操作数栈)
知识点回顾与重要考点
文章讲述了如何将中缀表达式转换为后缀表达式,包括手动和计算机算法。手动方法强调了运算符的运算顺序和左优先原则。计算机算法中使用栈来处理运算符,遇到操作数直接添加,遇到括号和运算符则依据优先级规则处理。此外,文章还介绍了如何用栈来计算中缀和后缀表达式,特别指出在后缀表达式计算中,栈用于暂存操作数,先出栈的作为右操作数。
9482

被折叠的 条评论
为什么被折叠?



