中缀表达式的计算,C++版本,Linux环境

今天在ubuntu下用c++写了中缀表达式的计算,并且用g++编译链接好。写了一个makefile命令。如果有需要可以从我的资源中下载。
好的,下面是一个实现中缀表达式求值的示例代码,你可以参考一下: ```python import re def infix_eval(expression): # 进行一些初始化工作 ops = [] # 运算符栈 values = [] # 操作数栈 priority = {'+': 1, '-': 1, '*': 2, '/': 2} expression = re.sub(r'\s', '', expression) # 去除空格 # 遍历表达式 i = 0 while i < len(expression): # 如果是数字,读取整个数值 if expression[i].isdigit() or expression[i] == '.': j = i + 1 while j < len(expression) and (expression[j].isdigit() or expression[j] == '.'): j += 1 values.append(float(expression[i:j])) i = j # 如果是左括号,将其压入栈 elif expression[i] == '(': ops.append(expression[i]) i += 1 # 如果是右括号,执行括号中的操作 elif expression[i] == ')': while ops[-1] != '(': op = ops.pop() val2 = values.pop() val1 = values.pop() values.append(apply_op(op, val1, val2)) ops.pop() i += 1 # 如果是运算符 elif expression[i] in priority: # 处理运算符优先级 while len(ops) != 0 and ops[-1] != '(' and priority[expression[i]] <= priority[ops[-1]]: op = ops.pop() val2 = values.pop() val1 = values.pop() values.append(apply_op(op, val1, val2)) # 将当前运算符压入栈 ops.append(expression[i]) i += 1 # 执行栈中的剩余操作 while len(ops) != 0: op = ops.pop() val2 = values.pop() val1 = values.pop() values.append(apply_op(op, val1, val2)) # 返回最终的结果 return values[0] def apply_op(op, val1, val2): if op == '+': return val1 + val2 elif op == '-': return val1 - val2 elif op == '*': return val1 * val2 elif op == '/': return val1 / val2 # 测试 print(infix_eval('1+2*3-4/2')) # 输出 5.0 ``` 这个代码使用了两个栈,一个用来存储运算符,另一个用来存储操作数。它遍历中缀表达式,并在遍历的过程中对栈进行操作,最终返回表达式的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值