C/C++用栈实现中缀表达式的计算

基本思路中缀表达式转后缀表达式实现后缀表达式的计算如果了解中缀转换为后缀的程序,以及了解计算后缀表达式的程序,那么改算法就会很容易,不过是二者的结合,然后代码稍微做一点改变,基本思路不变。1.初始化两个栈:操作数栈和运算符栈2.若扫描到操作数,压入操作数栈3.若扫描到运算符或界限符,按照“中缀转后缀”相同的逻辑压入运算符栈每当弹出一个运算符,就需要弹出两个操作数执行相应的运算 代码代码还是蛮复杂的,建议先搞懂:1.中缀表达式如何转为后缀表达式 2.如何计算后缀表达式 这两个
摘要由CSDN通过智能技术生成

基本思路

中缀表达式转后缀表达式
实现后缀表达式的计算
如果了解中缀转换为后缀的程序,以及了解计算后缀表达式的程序,那么该算法就会很容易,其实就是二者的结合,然后代码稍微做一点改变,基本思路不变。

1.初始化两个栈:操作数栈和运算符栈
2.若扫描到操作数,压入操作数栈
3.若扫描到运算符或界限符,按照“中缀转后缀”相同的逻辑压入运算符栈
每当弹出一个运算符,就需要弹出两个操作数执行相应的运算

 

代码

代码还是蛮复杂的,建议先搞懂:1.中缀表达式如何转为后缀表达式 2.如何计算后缀表达式 这两个问题,最后把这两个问题一结合,代码就有了。

#include <iostream>
#include <stack>
#include <cstring>

using namespace std;

//处理运算符的优先级 
int getPripority(char ch){
   
	int level=0;
	switch(ch){
   
		case '(':
			level=1;
			break;
		case '+':
		case '-':
			level=2;
			break;
		case '*':
		case '/':
			level=3;
			break;
		default:
			break;
	}
	 return level;
}

//判断是否为数字 
bool isNum(char ch){
   
	if(ch>='0'&&ch
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值