【发布时间】:2014-02-26 08:16:47
【问题描述】:
我觉得这是一个非常愚蠢的问题,但我找不到答案。
假设我们要计算一个后缀表达式,该表达式包含具有不同数量的各种运算符(例如 ADD、SUB 和其他可以采用N 操作数数量的运算符)。评估使用这些运算符构建的后缀表达式需要多少堆栈内存(以元素数量计)?
有没有办法确定所需的内存量?
编辑:这个问题似乎有点模棱两可。我要问的是,这种操作需要的最大堆栈元素数是多少?它甚至可以计算出来,或者它可以是无限多并且取决于表达式?
【问题讨论】:
-
对于您感兴趣的特定表达式,一次压入堆栈的最大值是多少?这就是你的堆栈深度。
-
@keshlam 这正是我要问的!几个??
-
我认为最坏的情况是 n!其中 n 是运算符和操作数的数量,但要真正计算实际值非常复杂,因为它取决于很多东西。
-
@emcas88 -- 你为什么会认为 O(n!)?我不可能比 O(n) 差(如果你存储每个运算符的结果),而且应该少得多。
标签: c stack theory postfix-notation