gpt4 book ai didi

java - Java 中的合并队列

转载 作者:行者123 更新时间:2023-12-01 15:02:05 29 4
gpt4 key购买 nike

我想知道编写将 ArrayQueue 与另一个队列合并的方法的最佳方法是什么,而不从传递的 q 中删除任何元素。

eg. queue1 = [1,2,3,4] and queue2 = [5,6,7,8,9,10].

当调用 queue1.mergeQs(queue2) 时,它将创建 queue1 = [1,5,2,6,3,7,4,8,9,10] code> 而 queue2 将保留 [5,6,7,8,9,10]

    public void mergeQs(ArrayQmerge q){}

这种方式似乎比传递两个队列并返回一个新的合并队列更难实现。谢谢。

为了澄清,我正在寻找一种方法来交错两个队列中的元素。

最佳答案

一个可能对您有帮助的细节是,私有(private)字段在 Java 中同一类的不同对象之间是可见的。这意味着,只要您只想合并自己类的队列,您的代码就可以完全访问所有内部字段,例如用于存储元素的数组。

对于最简单的情况,所有元素都存储在线性数组中,队列头位于索引零,这样的情况可能是一个开始:

public void mergeQs(ArrayQmerge q) {
Object[] array = new Object[this.size() + q.size()];

int i;
int o;

// Interleave elements
for (i = 0, o = 0; i < this.size() && i < q.size(); ++i) {
array[o++] = this.array[i];
array[o++] = q.array[i];
}

// Copy the remaining elements
while (i < this.size()) {
array[o++] = this.array[i++];
}

while (i < q.size()) {
array[o++] = q.array[i++];
}

this.array = array;
}

关于java - Java 中的合并队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501660/

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