C++_利用栈进行运算符表达式的运算

本文介绍如何使用C++将运算符表达式转化为后缀表达式,并进行运算。通过读取输入的运算符,比较栈中运算符的优先级,将数字写入字符串,处理括号,最后进行后缀表达式的运算,得到结果。代码适用于初学者了解STL栈的应用。

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

一、基本思路:
将输入的表达式转化成后缀表达式,然后对后缀表达式进行运算

二、将算式转化为后缀表达式:
1、从左向右读取输入的运算符
2、若为数字将数字写入字符串A中
3、若为运算符,与栈顶的运算符比较优先级
3-1、若栈为空或为‘(’则直接压入栈中
3-2、若优先级高直接压入到栈中
3-3、若优先级低或相等则将栈顶的元素弹出并放入到A中,再与新的栈顶元素比较
4、若为括号
4-1、若为(则将其直接要入到栈中
4-2、若为)则从栈顶开始弹出元素依次放入到A中直到遇到(并删除这对括号
5、重复上述步骤直到算式读完

注:因为遇到优先级相同或更高的运算符号时要将栈顶的运算符弹出并加入到字符串中,所以相邻的运算符的数量小于等于二,所以在3-3处最多只需判断两次即可。

三、运算
1、读取刚刚转化成后缀表达式的字符串A,从左向右读取
2、若为操作数,则将其压入到栈B中
3、若为运算符,则读取并弹出栈堆上的两个元素进行运算(先出的元素为第一个元素),将结果压入到栈中成为新的栈顶元素。
4、重复上述两个步骤直到A结束,结果为栈顶元素。

C++代码

Cal.h

#ifndef CAL_H_INCLUDED
#define CAL_H_INCLUDED

#include<stack>
#include <string>
#include<iostream>

using namespace std;

class Cal{
public :
    string tran();//将输入的字符串转化成后缀表达式
    double result();//运算函数
public :
    Cal();
    Cal(string a);
private:
    string exp;
    stack<char>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值