首先,我为我糟糕的英语感到抱歉。
对于我的算法和数据结构类的最后一个项目,我需要用C++创建一个简单的数值表达式求解器。它需要解决像3*12+(4-6)这样的简单表达式。我设法拆分了表达式,并将运算符和数字分开,但我不能再进一步了。诀窍是将运算符放在二叉树上,但我没有做到这一点。
该程序只需要使用默认的C++库。也许有一些基本的实现我可以在其上构建?
提前谢谢。
发布于 2012-06-23 03:49:16
暂时忘掉二叉树吧。
您需要将表达式转换为reverse polish notation。在这个转换过程中,你正在构建一个二叉树!
反向抛光记法
发布于 2012-06-24 17:17:29
看看这个http://www.codeproject.com/KB/recipes/rwformulaparser.aspx,我想这个项目会解决你的问题的,乔塞米
发布于 2012-10-06 05:31:13
你会想要将它转换成反向抛光符号,转换的算法有点复杂,但许多网站详细说明了确切的步骤。做多位数字会让事情变得更复杂。
您需要知道的最重要的事情是,对于RPN,您必须使用堆栈,而不是二叉树。一旦等式切换到RPN,您将把它的数字清空到堆栈中,直到遇到一个运算符,然后从堆栈中取出前两个数字,对它们进行操作,并将最终的值放回堆栈中。最后,你将在堆栈上留下一个数字,它将是你的等式的答案。
https://stackoverflow.com/questions/11162902
复制相似问题