栈表达式

本文介绍了栈在处理前缀、中缀和后缀表达式中的应用,包括后缀表达式求值的详细步骤,中缀转后缀的方法,以及中缀表达式的递归求值过程。栈在解决这些数学表达式问题中起到关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈表达式

栈的用处就是用来求前缀,中缀,后缀的表达式三种方法
中缀,就是符号在中间的算式
前缀,就是符号在前面的算式
后缀,就是符号在后面的算式

一:后缀表达式进行求值
1.首先我们建立一个栈,用来存数,注意进行扫描表达式中的元素。
2.如果遇到一个数,就把他入栈。
3.如果遇到符号,就取出栈顶两个元素,求值然后入栈。(符号要进行枚举,枚举±*/)
4.直至最后当栈里只剩下一个元素,就是这个表达式的值
我们再来了解一个函数,叫做stoi,是一个字符串转整形的函数,但是不能随便用

二:中缀转后缀
1.建立一个用于存运算符号的栈,逐个进行扫描中缀表达式的元素
2.如果遇见数就输出
3.如果遇到左括号就入栈
4.如果遇到右括号,就说明结束了,不断的取出栈顶直至遇见左括号,然后出栈
5.如果遇到运算符,只要栈顶的符号的优先级大于新的,也就是碰见优先级小的就出栈,不然就一直积累。就不断的取栈顶输出,最后把新的进栈。
6.这样的话输出的就是一个后缀表达式

三:中缀表达式的递归求值
大目标:求解1~n的值
子问题:l~r的值
1.如果l~r之间没有被括号包含的运算符
如果存在加减号,就分成左右两半进行递归,结果相加减
如果存在乘除,就分成左右两半进行递归,结果相乘除

2.不存在运算符:
结尾是括号就递归l+1~r-1
不然就是l~r就是一个数直接返回

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<stack>
#include<cstdio>
using 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值