algorithm - 如何估计将中缀表达式转换为后缀表达式所需的堆栈空间

标签 algorithm stack estimation shunting-yard

有著名的shunting-yard algorithm可用于将中缀表达式(例如 1 + 2 * 3)转换为后缀表达式(例如 1 2 2 * +)。调车场算法需要一个栈来存储即将移动的元素。

是否可以预先估计在线性时间和常量内存中将特定输入转换为其后缀形式所需的堆栈长度?

最佳答案

当然。 shunting-yard algorithm仅将运算符(包括括号)压入堆栈,因此一阶近似值是表达式中运算符的数量。有了更多的智能,您可以扫描表达式并寻找关联性和分组。但是当你完成时,你可能已经编写了一个基于堆栈的算法来确定表达式所需堆栈大小的最佳估计,并且会使你的执行成本翻倍。

关于algorithm - 如何估计将中缀表达式转换为后缀表达式所需的堆栈空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15372432/

相关文章:

python - 用于整数分区的优雅 Python 代码

c# - 是否有 la Gavoille 等人的带有距离标记的最短路径算法的开源实现?

php - 如何预测系统资源需求?

opencv - block bundle 调整流程

ruby-on-rails - 如何估算 Rails 应用程序开发成本?

algorithm - 多项式回归 - 两种算法之间的结果准确性

r - 迭代搜索和重新分类栅格中具有最小值的像素

将结构指针转换为另一个嵌入结构

c++ - 是否可以使用内联汇编在 visual studio 2010 c++ 中查找代码地址?

java - java中循环队列相对于栈的优势