【发布时间】:2010-10-15 20:30:15
【问题描述】:
之前there 提出了类似的问题,但这里的问题是相反的,使用两个队列作为堆栈。问题...
给定两个具有标准操作的队列(enqueue、dequeue、isempty、size),使用其标准操作(pop、push、isempty、@987654338)实现一个堆栈@)。
解决方案应该有两个版本。
- 版本A:推送项目时堆栈应该是有效的;和
- 版本 B:堆栈在弹出项目时应该是有效的。
比起任何特定的语言实现,我对算法更感兴趣。但是,我欢迎使用我熟悉的语言表达的解决方案 (java,c#,python,vb,javascript,php)。
【问题讨论】:
-
没错! CLRS - 10.1-6 (tinyurl.com/clrs-ex-10-1-6)
-
One Stack, Two Queues 提供了一个优雅的解决方案,其中
Pop在 $O(1)$ 中工作,Push在 $O(\sqrt{n})$ 摊销时间内工作。 -
@rampion 现在它的 CLRS - 10.1-7。 :)
-
相关帖子。这是使用only一个队列here实现堆栈的另一个有趣问题。
标签: java c# python vb javascript php algorithm data-structures stack