首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用堆栈的C++后缀表达式求值。我认为我没有正确地转换数据

使用堆栈的C++后缀表达式求值是一种常见的数学运算方法,它可以将一个后缀表达式(也称为逆波兰表达式)转换为对应的数值结果。下面是一个完善且全面的解答:

后缀表达式是一种不含括号的数学表达式,其中操作符位于操作数之后。使用堆栈可以方便地对后缀表达式进行求值。

在C++中,我们可以通过使用一个栈来实现后缀表达式的求值过程。我们遍历后缀表达式中的每个元素,遇到操作数时,将其入栈;遇到操作符时,从栈中取出相应数量的操作数进行计算,并将结果再次入栈。最终,栈中剩下的元素即为表达式的计算结果。

下面是一个示例代码,演示了如何使用堆栈来求解后缀表达式:

代码语言:txt
复制
#include <iostream>
#include <stack>
#include <string>
#include <cmath>

using namespace std;

double evaluatePostfixExpression(const string& postfixExpression) {
    stack<double> operandStack;
    size_t pos = 0;

    while (pos < postfixExpression.size()) {
        char currentChar = postfixExpression[pos];

        if (isdigit(currentChar)) {
            // 如果是数字,则将其转换为对应的数值并入栈
            double operand = 0;
            while (isdigit(currentChar)) {
                operand = operand * 10 + (currentChar - '0');
                pos++;
                currentChar = postfixExpression[pos];
            }
            operandStack.push(operand);
        } else if (currentChar == ' ') {
            // 忽略空格字符
            pos++;
        } else {
            // 如果是操作符,则从栈中取出相应数量的操作数进行计算,并将结果入栈
            double operand2 = operandStack.top();
            operandStack.pop();
            double operand1 = operandStack.top();
            operandStack.pop();

            double result;
            switch (currentChar) {
                case '+':
                    result = operand1 + operand2;
                    break;
                case '-':
                    result = operand1 - operand2;
                    break;
                case '*':
                    result = operand1 * operand2;
                    break;
                case '/':
                    result = operand1 / operand2;
                    break;
                case '^':
                    result = pow(operand1, operand2);
                    break;
                default:
                    cout << "Invalid operator: " << currentChar << endl;
                    return 0;
            }

            operandStack.push(result);
            pos++;
        }
    }

    // 返回栈顶元素作为最终结果
    return operandStack.top();
}

int main() {
    string postfixExpression = "5 2 + 4 * 3 /";
    double result = evaluatePostfixExpression(postfixExpression);
    cout << "Result: " << result << endl;

    return 0;
}

上述代码中,我们首先定义了一个evaluatePostfixExpression函数,该函数接受一个后缀表达式作为输入,并返回表达式的计算结果。在函数中,我们使用stack<double>来表示操作数栈,遍历后缀表达式中的每个字符,根据其类型进行相应的操作。

main函数中,我们定义了一个后缀表达式字符串"5 2 + 4 * 3 /",并将其传递给evaluatePostfixExpression函数进行求值。最后,我们将求得的结果输出到控制台。

这是一个简单的后缀表达式求值示例,可以通过修改后缀表达式字符串来计算不同的表达式。希望这个例子能帮助你理解使用堆栈的C++后缀表达式求值的方法。

如果您想深入了解堆栈、后缀表达式求值等概念,以及使用C++进行相关开发,推荐您参考腾讯云的云开发文档和教程,了解更多相关信息:

请注意,以上是一个例子,与云计算、IT互联网领域的名词词汇关系不大,不涉及到具体的腾讯云产品。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据结构 | 入门】堆栈与队列(问题引入&实现&算法优化)

文章目录 一、堆栈引入 二、 堆栈抽象数据类型描述 三、堆栈顺序存储实现 3.1主要操作实现 四、堆栈链式存储结构 五、表达式求值 六、队列引入 七、队列顺序存储实现 1)入队列 2) 出队列...七、队列链式存储实现 一、堆栈引入 计算机如何进行表达式求值 由于表达式符号是有优先级,所以这是难点之一 有以下两个表达式 显然后缀表达式更加简单,不用考虑优先级,演示一个例子...对这种求值策略我们有以下启示 这其实便是这节我们要讲堆栈 二、 堆栈抽象数据类型描述 例如我们叠在一起碗,在使用清洗都和堆栈规则 如下图是堆栈变化图 其中...操作 pop操作 五、表达式求值 回到开头,我们再来 看表达式求值问题,为了避免运算符中优先级复杂性,我们使用后缀表达式,并使用堆栈来实现,我们把运算符和运算数丢进堆栈,当为运算符时,pop...前两个运算数和运算符运算后再放入栈顶,最后栈顶运算数便是结果 但我们平时所用都是中缀表达式,所以我们如何把中缀表达式转换后缀表达式,观察一个例子 其中存储运算符号结构便是堆栈

63010

你所能用到数据结构(八)

C++或者什么语言编程里面,不需要引用什么头文件就可以像声明数组一样声明一个堆栈,然后很方便就可以使用这个结构。...因为到后面进行树遍历时候你就会明白意思了,哈哈,那先介绍一下什么叫逆波兰表达式吧,先看看官方解释 “逆波兰表达式又叫做后缀表达式。...我们可以尝试着在计算一个算式时候先不进行计算,只有确认没有优先级更高运算符时候再进行计算,怎样从这种普通表达式转换成为后缀表达式在后面会进行说明,现在按照某种已经知道方法(可能你也知道)这个算式后缀表达式是...模拟是一个(1+2)*(2+1)算式,这个转换成为后缀表达式是12+21+*,因为括号拥有最高优先级,那就先看看代码: 1 void main() 2 { 3 string expression...char型数字,直接减去'0'就能获得其int值,这个技巧可以省掉很多转换麻烦,如果你用switch case进行判断的话,那么就太浪费时间了(初学c/c++时候就这么干)。

63340
  • 中缀表达式后缀表达式方法,步骤和原理及后缀表达式运算方式

    大家好,又见面了,是你们朋友全栈君。...中缀转后缀 本文大部分资料参考慕课何钦铭老师数据结构 相关慕课链接:表达式求值 中缀表达式是最常用算术表达式,运算符在运算数中间,运算需要考虑运算符优先级....先举个简单转换例子 2+9/3-5 (前缀)-> 2 9 3 / + 5 – (后缀) 先进行乘除再进行加减 运算规律,运算数位置不变,改变是运算符位置 可以推栈实现,用堆栈储存等待中运算符...再来解释一下开始简单例子 带括号运算 选取慕课里何钦铭老师案例 后缀表达式运算步骤: (以堆栈储存) 从左到右,遇到运算符就弹出相应运算数,运算后再把结果入栈.最终结果就是栈顶数值...这篇文章只是整理中缀表达式后缀表达式方法和理论,目的是为了理解. 具体代码实现看我另一篇文章(模拟表达式运算). 这部分转换对于初学者来说可能很模糊,建议去看开头链接那个视频.

    40820

    栈(2)

    例如:(3+4)*5-6对应前缀表达式就是- * + 3 4 5 6,针对前缀表达式求值步骤如下: 从左往右扫描,将6、5、4、3压入堆栈 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),...,如(3+4)* 5 - 6 (2)中缀表达式求值是我们人最熟悉,但是对计算机来水哦却不好操作(前面我们讲案例就能看到这个问题),因此,在计算结果时,往往会将中缀表达式转换成其他表达式来操作(一般转为后缀表达式...后缀表达式 (1)后缀表达式又称逆波兰表达式,与前缀表达式相似,只是运算符位于操作数之后 (2)举例:(3+4)* 5 - 6对应后缀表达式就是3 4 + 5 * 6 - (3)再举例: 正常表达式...例如:(3+4)* 5 - 6 对应前缀表达式就是3 4 + 5 * 6 -,针对后缀表达式求值步骤如下: (1)从左往右扫描,将3和4压入堆栈; (2)遇到+运算符,因此弹出4和3(4为栈顶元素,...逆波兰计算器 需求如下: (1)输入一个逆波兰表达式使用(Stack)计算结果 (2)支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持对整数计算。

    21700

    数据结构

    2)处理递归调用:和子程序调用类似,只是除了储存下一个指令地址外,也将参数、区域变量等数据存入堆栈中。 3)表达式转换[中缀表达式后缀表达式]与求值(实际解决)。 4)二叉树遍历。...栈很简单,入栈时top++,出栈了top-- 不用想着某个数出栈了,为什么数组没有删除那个数,你下次入栈他就会自动覆盖,所以不要去理会或者做一些愚蠢操作。 由于过程很简单,认为无需过多解释。...中缀表达式求值是我们人类最熟悉,但是对计算机来说却不好操作(前面我们讲案例就能看这个问题),因此在计算结果时,往往会将中缀表达式转成其它表达式来操作(一般转成后缀表达式)。...思路分析: (3+4)×5-6 对应后缀表达式是 3 4 + 5 × 6 - , 针对后缀表达式求值步骤如下: 从左至右扫描,将 3 和 4 压入堆栈; 遇到+运算符,因此弹出 4 和 3(4 为栈顶元素...将 s1 中剩余运算符依次弹出并压入 s2 依次弹出 s2 中元素并输出,结果逆序即为中缀表达式对应后缀表达式 例如:中缀表达式 “1+((2+3)×4)-5” 转换后缀表达式结果为 "1

    69730

    面试题解法二:逆波兰表达式计算1 + (5 - 2) * 3

    了解前缀、中缀、后缀表达式 关于概念这里简单贴一下,想了解更多可以自行Google 前缀表达式:是一种没有括号算术表达式,与中缀表达式不同是,其将运算符写在前面,操作数写在后面。...后缀表达式:指的是不包含括号,运算符放在两个运算对象后面,所有的计算按运算符出现顺序,严格从左向右进行,后缀表达式也称为“逆波兰式”。...例如:1 2 3 4 + * + 5 + 注: 与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们普遍用法。...中缀表达式如何转换后缀表达式以及运算 一、 将中缀表达式转换后缀表达式算法: 从左至右扫描一中缀表达式。...当表达式读取完成后运算符堆栈中尚有运算符时,则依序取出运算符到操作数堆栈,直到运算符堆栈为空。 二、逆波兰表达式求值算法: 循环扫描语法单元项目。

    1.9K81

    图解java数据结构之栈(Stack),你确定不看看吗?

    2)处理递归调用:和子程序调用类似,只是除了储存下一个指令地址外,也将参数、区域变量等数据存入堆栈中。 3)表达式转换[中缀表达式后缀表达式]与求值(实际解决)。 4)二叉树遍历。...(逆波兰)计算器 中缀表达式求值是我们人最熟悉,但是对计算机来说却不好操作,因此,在计算结果时,往往会将中缀表达式转成其它表达式来操作(一般转成后缀表达式) 后缀表达式又称逆波兰表达式,与前缀表达式相似...1)后缀表达式计算机求值 从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶两个数,用运算符对它们做相应计算(次顶元素 和 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端...,最后运算得出值即为表达式结果 例如: (3+4)×5-6 对应后缀表达式就是 3 4 + 5 × 6 - , 针对后缀表达式求值步骤如下: (1) 从左至右扫描,将3和4压入堆栈; (2) 遇到...s2 (8)依次弹出s2中元素并输出,结果逆序即为中缀表达式对应后缀表达式 举例说明:将中缀表达式“1+((2+3)×4)-5”转换后缀表达式过程如下: ?

    1K10

    《算法竞赛进阶指南》0x11 栈

    C++ STL 也提供了一个容器 std::stack,使用前需要引入 stack 头文件 STL 中对 stack 定义: // clang-format off template<...较为常用使用赋值运算符 = 为 stack 赋值 表达式求值 表达式求值是栈一个经典应用,表达式类型分为三种:前缀、中缀、后缀表达式 后缀表达式求值 建立一个用于存数栈,逐一扫描该后缀表达式元素...如果遇到一个数,则把数入栈 如果遇到运算符,就取出栈顶两个数进行计算,把结果存回栈中 扫描完成后,栈中恰好剩下一个数,就是该后缀表达式值 中缀表达式求转后缀表达式 建立一个用于存运算符栈,逐一扫描该中缀表达式元素...优先级为乘除 > 加减 > 左括号 一次取出并输出栈中所有剩余符号,最终输出序列就是一个与原中缀表达式等价后缀表达式 // 中缀表达式后缀表达式,同时对后缀表达式求值 int solve(string...这里状态定义和蓝书上不太一样,个人认为这样定义比较容易接受一点 初始状态为 f[0, 0] = 1 目标状态为 f[n, 0] 状态计算根据最后一步进行递推,可能是栈中数字出栈,也可能是新数字加入栈中

    1K20

    CC++刁钻问题各个击破之细说sizeof

    概述: Sizeof是C/C++关键字,它是一个运算符,其作用是取得一个对象(数据类型或者数据对象)长度(即占用内存大小,以byte为单位)。...特性6:当表达式作为sizeof操作数时,它返回表达式计算结果类型大小,但是它不对表达式求值!...请看分析: 由于默认类型转换原因,表达式ch+num计算结果类型是int,因此n1值为4!...而表达式ch=ch+num;结果类型是char,记住虽然在计算ch+num时,结果为int,但是当把结果赋值给ch时又进行了类型转换,因此表达式最终类型还是char,所以n2等于1。...这是两给非常好问题,事实上之前没有看到任何关于这方面的论述(可能是资料不足),正是在看到sizeof(item.b)不能通过编译时想到了这两个问题,然后通过验证得出了后面的结论:对包含位域结构体是可以使用

    88420

    数据结构】线性表----栈详解

    表达式求值: 中缀表达式转换后缀表达式,以及后缀表达式求值。 撤销操作: 许多软件中撤销(Undo)功能基于栈实现。 栈注意事项 溢出问题: 在某些编程语言或环境中,栈大小是有限。...在计算机系统中,栈(堆栈,Stack)是一种用于管理函数调用和局部变量内存区域。它是计算机内存一部分,负责存储函数调用过程中临时数据,包括函数参数、局部变量、返回地址等。...栈用途 函数调用管理: 栈用于管理函数调用和返回,确保函数可以正确地调用其他函数,并在完成后返回调用点。 局部变量存储: 函数局部变量通常存储在栈帧中,便于管理和清理。...栈作为一种基础而重要数据结构,我们会经常使用到它,所以需要熟练掌握。 ck Overflow)** 栈空间是有限,如果函数调用层次过深(如递归调用过多),可能会导致栈空间耗尽,发生栈溢出。...这种栈机制确保了函数调用有序进行和局部变量有效管理。 通过以上介绍和代码示例,相信你对栈这种数据结构有了一个基本了解。栈作为一种基础而重要数据结构,我们会经常使用到它,所以需要熟练掌握。

    12310

    Qz学算法-数据结构篇(表达式、递归)

    前缀、中缀、后缀表达式->(逆波兰表达式)1.前缀表达式(波兰表达式)前缀表达式又称波兰式,前缀表达式运算符位于操作数之前举例说明:(3+4)×5-6对应前缀表达式就是-×+3456前缀表达式计算机求值从右至左扫描表达式...)×5-6对应前缀表达式就是**-×+3456,针对前缀表达式求值步骤如下:从右至左扫描,将6、5、4、3压入堆栈遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素),计算出3+4值,得7再将...b c - * +a=1+3a 1 3 + =后缀表达式计算机求值从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶两个数,用运算符对它们做相应计算(次顶元素和栈顶元素),并将结果入栈...:重复上述过程直到表达式最右端,最后运算得出值即为表达式结果例如:(3+4)×5-6对应后缀表达式就是34+5×6-,针对后缀表达式求值步骤如下:从左至右扫描,将3和4压入堆栈:遇到+运算符,因此弹出...,由此得出最终结果逆波兰计算器输入一个逆波兰表达式使用栈(Stack),计算其结果支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持对整数计算。

    24520

    处理递归调用:和子程序调用类似,只是除了储存下一个指令地址外,也将参数、区域变量等数据存入堆栈中。 表达式转换[中缀表达式后缀表达式]与求值(实际解决)。 二叉树遍历。...例如:(3+4)×5-6对应盾缀表达式就是 3 4 + 5 × 6 - ,针对后缀表达式求值步骤如下 从左至右扫描,将3和4压入堆栈; 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素),计算出...,要求完成如下任务: 输入一个逆波兰表达式(后缀表达式),使用栈(Stack),计算其结果 支持小括号和多位数整数,因为这里我们主要讲的是数据结构,因此计算器进行简化,只支持对整数计算。...res=29 Process finished with exit code 0 #中缀表达式转换后缀表达式 大家看到,后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长情况下...依次弹出s2中元素并输出,结果逆序即为中缀表达式对应后缀表达式 #举例说明 将中缀表达式“1+((2+3)×4)-5”转换后缀表达式过程如下 因此结果为:"1 2 3 + 4 × + 5 -"

    42110

    一日一技:逆波兰式

    逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入数学表达式方式,在逆波兰记法中,所有操作符置于操作数后面,因此也被称为后缀表示法...Bauer)和艾兹格·迪科斯彻在1960年代早期提议用于表达式求值,以利用堆栈结构减少计算机内存访问。...堆栈自动记录中间结果,这就是为什么逆波兰计算器能容易对任意复杂表达式求值。与普通科学计算器不同,它对表达式复杂性没有限制。...逆波兰表达式中不需要括号,用户只需按照表达式顺序求值,让堆栈自动记录中间结果;同样,也不需要指定操作符优先级。 逆波兰计算器中,没有“等号”键用于开始计算。...逆波兰计算器需要“确认”键用于区分两个相邻操作数。 机器状态永远是一个堆栈状态,堆栈里是需要运算操作数,栈内不会有操作符。 教育意义上,逆波兰计算器使用者必须懂得要计算表达式含义。

    97810

    堆栈应用——用JavaScript描述数据结构

    将传入数组进行倒序遍历,并逐个压入堆栈 最后使用read接口,输出数据 好像很简单,不用担心,复杂在后面:) 2.2 十进制转换为二进制 数值转换进制问题,是堆栈小试牛刀。...案例内容是对1+7*(4-2)求值。...常规中缀记法“3 - 4 + 5”在逆波兰记法中写作“3 4 - 5 +” 调度场算法(Shunting Yard Algorithm)是一个用于将中缀表达式转换后缀表达式经典算法,由艾兹格·迪杰斯特拉引入...由于乘除运算符前后数字,在运算上有区别,所以不能随意调换位置。 2.4 中缀表达式转换后缀表达式(逆波兰表示法) 逆波兰表示法,是一种对计算机友好表示法,不需要使用括号。...下面案例,是对上一个案例变通,也是用调度场算法,将中缀表达式转换后缀表达式

    1K30

    数据结构】你知道波兰表达式和逆波兰表达式吗?才知道原来栈在表达式求值中还能这样使用……

    在今天内容中,我们将会介绍如何通过栈在不需要考虑操作符优先级情况下来完成无歧义表达式求值。这时可能有朋友就有疑问了,这个栈还能再表达式求值使用?并且不需要考虑操作符优先级?...因此如果我们想要通过栈来实现这两种表达式的话,栈中入栈对象肯定是有区别的。那有没有什么方式能够保证不管我使用是波兰表达式还是逆波兰表达式,栈中存放内容都是一致呢?...在了解了前缀、后缀表达式以及前、中、后缀这三种表达式相互转换之后,我们就要开始进入今天重点内容了——栈在表达式求值应用。...在今天实现过程中我们会使用链栈来实现前缀表达式求值。...通过今天内容,希望大家能够掌握波兰表达式与逆波兰表达式手算求值过程以及手动进行相互转换过程,而更注重实操朋友能够通过今天内容理清用栈实现波兰表达式与逆波兰表达式算法逻辑并能够自己手搓一份代码进行验证

    6810

    【设计模式】行为型模式-第 3 章第 3 讲【解释器模式】

    ---- 这里可能有人还是不太明白啥叫终结符表达式,啥叫非终结符表达式。下面举例说明一下: TerminalExpression(终结符表达式) 实现文法中与终结符有关解释操作。...解释过程一般是:操作数入栈;遇到操作符时,操作数出栈,求值,将结果入栈;当一遍后,栈顶就是表达式值。因此逆波兰表达式求值使用堆栈结构很容易实现,和能很快求值。  ...栈是一种数据结构,它按照后进先出原则存储数据,先进入数据被压入栈底,最后数据在栈顶,需要读数据时候从栈顶开始弹出数据。 栈是只能在某一端插入和删除特殊线性表。...() E 移除堆栈顶部对象,并作为此函数值返回该对象 peek() E 查看堆栈顶部对象,但不从堆栈中移除它 search(Object o) int 返回对象在堆栈位置,以1为基数 下面就是我们具体上下文环境类代码...解释器模式适用于表达式被解释并转换为其内部表示情况。

    34020

    前缀、中缀、后缀表达式「建议收藏」

    大家好,又见面了,是你们朋友全栈君。...虽然人大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂,因此计算表达式值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。...前缀表达式计算机求值: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶两个数,用运算符对它们做相应计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端...后缀表达式计算机求值: 与前缀表达式类似,只是顺序是从左至右: 从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶两个数,用运算符对它们做相应计算(次顶元素 op 栈顶元素...编写Java程序将一个中缀表达式转换为前缀表达式后缀表达式,并计算表达式值。

    1.8K20

    C++】五道经典面试题带你玩转栈与队列

    int top() 获取堆栈顶部元素。 int getMin() 获取堆栈最小元素。 题目详情: 解题思路: 我们设计两个栈,一个存正常数据,一个存当前最小值....true : false; } }; 提交运行: 三.逆波兰表达式求值 题目链接: 150....题目详情: 解题思路: 计算后缀表达式思路较简单:创建一个栈然后遍历序列,如果碰到数字,就入栈,如果碰到运算符,就出两个栈顶元素进行运算,然后将结果再入栈.本题需要注意就是序列是...题目详情: 解题思路: 该题我们在C语言接触栈时就已经完成过,贴个思路供大家参考,在C++这里思路是一模一样,只是C++部分栈实现比C语言简洁方便了不少,可以说是更简单了一些:...另一种是使用一个队列,然后使用一个levelSize变量来记录下上一层结点出时候入了多少个,下一层就循环多少次将数据放入vector里,直到队列出空,代表二叉树遍历结束.

    10510

    应用----算术表达式计算问题(中缀转后缀后缀计算)

    应用----算术表达式计算问题(中缀转后缀后缀计算) 问题引入:算术表达式计算是编译系统中一个基本问题,其实现方法是堆栈一个典型应用。任何一个算术表达式都是由操作数、运算符和分界符组成。...算术表达式计算分为两步: 中缀表达式转为后缀表达式 后缀表达式计算。...一、中缀表达式后缀表达式 1.基本运算规则: 先乘除后加减 先括号内后括号外 同级别先左后右 2.算法如下: 设置一个堆栈,初始时将栈顶元素置为"#"....4.计算过程 二、后缀表达式计算 1.算法思想: 设置一个堆栈存放操作数,从左至右依次扫描后缀算术表达式,每读到一个操作数就将其进栈,每读到一个运算符就从栈顶取出两个操作数施以改运算符所代表运算操作...0; } 四、运行结果(就用上面的2+(3-4*5)测试) 可以看到,上述分析过程和结果都正确,其实熟悉编译原理同学可以直接用“移进”和“规约动作”实现中缀算数表达式后缀算数表达式转换

    1K20
    领券