四则运算的实现c++

本文介绍如何用C++实现四则运算,重点讲解中缀表达式转换为后缀表达式的步骤,涉及数据结构与栈的应用。
摘要由CSDN通过智能技术生成

四则运算的实现

中缀表达式转换为后缀表达式

  1. 具体步骤
1 1.初始化两个栈:运算符栈s1和结果栈s2;
2 2. 从左往右扫描中缀表达式;
3 3. 遇到操作数时,将其压入s2;
4 4. 遇到运算符时,比较其与s1栈顶运算符的优先级:
5 4.1 如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符压入 s1;
6 4.2 若当前元素比栈顶元素优先级高,则压入s1;
7 4.3 否则,将s1栈顶元素弹出并压入s2,再次转到(1)与s1的栈顶元素相比较
8 5. 到括号时:(1)如果是左括号"(",则直接压入s1 (2)如果是右括号")",则依次弹出s1栈顶的运算符,并压入s2,直到遇到左括号为止,此时将这一对括号丢弃6.重复步骤2至5,直到表达式的最右边.
9 6. 将s1中剩余的运算符依次弹出并压入s2
10 7. 依次弹出s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式
#include <bits/stdc++.h>
using namespace std;

struct node {
   
    double num;
    char op;
    bool flag;
};
stack <node> s;
queue <node> q;
map <char,int> mp;
string str;
void change() {
   //把中缀表达式转化为后缀表达式
    node temp;
    for(int i=0; i<str.length();) {
   
        if(str[i]>='0'&&str[i]<='9'&&i<str.length()||str[i]=='.') {
   
            temp.num=0;
            temp.flag=1;
            while(str[i]>='0'&&str[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值