gpt4 book ai didi

c++ - 如何为“(1+3 * ( 5/4)) 之类的字符串编写求值器并获得数值结果

转载 作者:可可西里 更新时间:2023-11-01 14:59:50 25 4
gpt4 key购买 nike

这是一道面试题我对它的解决方案感到困惑,我在想我需要堆栈来推送和弹出这些运算符和操作数,但是我需要两个堆栈,一个用于运算符,一个用于操作数吗?还是只需要一个堆栈?我认为我们需要两个堆栈,但是有什么方法可以使用一个堆栈来解决问题吗?

我也有点困惑这是如何工作的,每次我得到一个运算符时,我都会弹出两个最顶层的操作数并将结果插入操作数堆栈

首选是先括号,然后除法,乘法,最后减法,然后加法

但是如何检查何时弹出两个操作数并进行必要的算术运算?

最佳答案

看看 shunting yard algorithm .

The shunting yard algorithm is a method for parsing mathematical equations specified in infix notation. It can be used to produce output in Reverse Polish notation (RPN) or as an abstract syntax tree (AST). The algorithm was invented by Edsger Dijkstra and named the "shunting yard" algorithm because its operation resembles that of a railroad shunting yard.

关于c++ - 如何为“(1+3 * ( 5/4)) 之类的字符串编写求值器并获得数值结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1581466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com