文章

119

粉丝

68

获赞

92

访问

20.1k

头像
计算表达式 题解:stack求值

#include <bits/stdc++.h>
using namespace std;

// 从字符串中提取整数
int getInt(string s, int &index) {
    int ans = 0;
    while (index < s.size() && isdigit(s[index])) {
        ans *= 10;
        ans += s[index++] - '0';
    }
    return ans;
}

// 返回运算符的优先级
int level(char c) {
    if (c == '*' || c == '/') return 2;  // 乘除优先级更高
    else if (c == '+' || c == '-') return 1;
    else return 0;
}

// 根据运算符计算两个数的结果
int opCal(int a, int b, char op) {
    if (op == '*') return a * b;
    else if (op == '/') return a / b;
    else if (op == '+') return a + b;
    else if (op == '-') return a - b;
    return 0;
}

int main() {
    string s;
    while (cin >> s) {
        int i = 0;
        stack<int> data;  // 存储操作数
        stack<char> op;   // 存储运算符
        while (i < s.size()) {
            if (isdigit(s[i])) {
                data.push(getInt(s, i));  // 读取操作数
            } else {
                char opi = s[i...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发