数据结构算法——1024. 表达式

题目

在这里插入图片描述

思路

中缀转成逆波兰表达式再按栈的特性操作

如何转换?也是利用栈特性:
①数字放在数字的栈里面
②操作栈若为空 随便放
③(*/都是随便放的
④当遇见‘)’的时候,把操作栈逐个排出(每次排除拿数字栈的两个元素进行操作再塞回去结果),直到遇见‘(’,此时把‘(’弹出
⑤塞入+和-的时候,若前一个操作为‘*’或者‘/’,我们就弹出元素直到遇见左括号或者栈空

代码

#include<iostream>
#include<string.h>
using namespace std;

int cal(int a, int b, char c)
{
   
    //cout << "a " << a <<" b " << b <<" c "<<c << endl;
    switch (c)
    {
   
    case '+':
        return a + b;
    break;
    case '-':
        return b - a;
    break;
    case '*':
        return a * b;
    break;
    case '/':
        return b / a;
    break;
    default:
        break;
    }
}
void print(int* a, int n)
{
   
    for(int i = 0 ; i < n; i++)
        cout << a[i] << " ";
    cout << endl;
    cout << n << endl;
}

int main()
{
   
    char ope[1000];
    int num[1000]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值