堆栈上用于中缀 -> 后缀转换的最大 elem 数



我把这个作为面试问题。

堆栈上可以包含的最大元素数是多少 从中缀形式转换为反转形式的特定时刻 后缀波兰语形式?

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

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

堆栈 2:(在消除/、* 和 * 之后,因为 + 的优先级较低)- +
=> maxLocal = 2 maxGlobal = 4

你能帮帮我吗?

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

最新更新