algorithm - 如何将两个队列合并为一个队列?

标签 algorithm merge queue

给定两个支持操作 enqueue/push_back、dequeue/pop_front 和 size 的队列

Q1: A1 A2 A3
Q2: B1 B2 B3

如何将它们合并到第三个队列(也支持相同的操作),获得:

Q3: A1 B1 A2 B2 A3 B3

我更感兴趣的是要使用的算法,而不是任何特定的语言实现。

最佳答案

这是一些伪代码:

Queue mergeQueues(Queue A, Queue B)
{
    Queue newQ;
    while(A.nonempty() OR B.nonempty())
    {
        if (A.nonempty())
            newQ.push(A.pop());
        if (B.nonempty())
            newQ.push(B.pop());
    }
    return newQ;
}

push 将一个元素插入队列,pop 移除队列中的下一个元素并返回它。

请注意,这不适用于堆栈。你最终会得到元素的倒退。如果您可以反转堆栈(例如,通过重复转移到另一个堆栈),那么它就可以工作。

关于algorithm - 如何将两个队列合并为一个队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875911/

相关文章:

python - 两个 dask 数据帧之间的合并给出 MemoryError

java - JPA 合并实体管理器

Git pull 或 git fetch 会忽略一些文件

c++ - 堆栈和队列容量的溢出 (c++)

algorithm - 有没有运行在(2 ↑ ↑ n)的算法?

python - Django - 在模板上将列表排序为 3 列

C++使用算法过滤类 vector

java - 如何借助词袋进行概念表征

java - 带工作池的 HTTP 请求队列

c - 这个简单的非阻塞队列会失败吗? (在带有 gcc atomic CAS 的 C 语言中)