gpt4 book ai didi

java - 反转自己的 Java LinkedList 实现的 Void 方法

转载 作者:行者123 更新时间:2023-11-30 04:10:01 26 4
gpt4 key购买 nike

无论采取什么方式,我该如何做到这一点?我需要一种修改实际列表本身的方法。我尝试过这样做:

// Reverses this list.
public void reverse() {
for (int i = 0, j = size - 1; i < size && j >= 0; i++, j--)
set(i, get(j));
}

...但是我失败了。中途又重新开始,我只是很烂。最终输出为:

List:       [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
Reversed: [24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]

如何避免数字到达中间后重复的问题?谢谢。

最佳答案

当您浏览列表时,您会用末尾的值覆盖前半部分的值,从而丢失那些早期的值。当你到达列表的后半部分时,前半部分的原始值不再存在!

尝试使用交换逻辑(在每次迭代时交换两个元素)并仅遍历列表的一半:

public void reverse() {
int half = size / 2;
for (int i = 0; i < half; i++) {
int j = size - 1 - i; // position of matching element at the other end
T item = get(i); // T is the type of data stored in the list
set(i, get(j));
set(j, item);
}
}

请注意,您不需要将中间元素与其自身交换。

关于java - 反转自己的 Java LinkedList 实现的 Void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851599/

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