gpt4 book ai didi

algorithm - 如何使用两个堆栈实现队列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:11:01 25 4
gpt4 key购买 nike

假设我们有两个堆栈并且没有其他临时变量。

是否可以仅使用两个堆栈来“构建”队列数据结构?

最佳答案

保留 2 个堆栈,我们称它们为 inboxoutbox

排队:

  • 将新元素推送到收件箱

出列:

  • 如果 outbox 为空,则通过从 inbox 弹出每个元素并将其插入 outbox 来重新填充它

    /li>
  • outbox

    弹出并返回顶部元素

使用此方法,每个元素将在每个堆栈中恰好出现一次 - 这意味着每个元素将被压入两次并弹出两次,从而提供摊销的常量时间操作。

这是 Java 中的一个实现:

public class Queue<E>
{

private Stack<E> inbox = new Stack<E>();
private Stack<E> outbox = new Stack<E>();

public void queue(E item) {
inbox.push(item);
}

public E dequeue() {
if (outbox.isEmpty()) {
while (!inbox.isEmpty()) {
outbox.push(inbox.pop());
}
}
return outbox.pop();
}

}

关于algorithm - 如何使用两个堆栈实现队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com