中缀堆栈的最大elems数 - >后缀翻译

时间:2012-06-18 09:45:25

标签: stack infix-notation polish

我把这作为面试问题。

  

a处可以堆叠的最大元素数是多少   从中缀形式到反转的特定时刻   后缀波兰语形式?

我知道原则是在堆栈上不能有优先级较高的元素(通常是*和/),优先级较低的元素(+和 - )。我尝试制作一个跟踪全局和局部最大数的算法,但我没有发现某个规则。

例如,如果我有infix: 2 - 3 * 4 * 5 / 1 + 10
堆栈1:- * * / => maxLocal = 4 maxGlobal = 4

堆栈2 :(消除/,*和*因为+具有较低优先级)- +
=> maxLocal = 2 maxGlobal = 4

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我认为没有限制。例如,采用以下中缀表达式:
(1 + (1 + (1 + (1 + (1 + (1 + (1 + …
它非常深,每次将另一个元素推送到堆栈时。当然,解析器接受的括号数通常有一些限制,但这种限制纯粹是实用的(防止堆栈溢出),而不是理论上的。