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

Void方法来反转自己的Java LinkedList实现,java,linked-list,Java,Linked List,不管怎样,我怎么能做到?我需要一个修改实际列表本身的方法。我尝试过这样做: //反转此列表。 公共无效反向(){ 对于(int i=0,j=size-1;i=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:

不管怎样,我怎么能做到?我需要一个修改实际列表本身的方法。我尝试过这样做:

//反转此列表。
公共无效反向(){
对于(int i=0,j=size-1;i=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]
我如何避免在到达中间位置时重复数字的问题?谢谢。

先生

我设法做到了这一点,您可以添加自己的逻辑来减少我使用的for循环。但我希望它在某种程度上有所帮助

    for(int i=0;i<list.size()/2;i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/2;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/4;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/6;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/8;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/10;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

    for(int i=list.size()/12;i<list.size();i++) {
        int val = list.removeLast();
        System.out.println("i:" + i + " val " + val);
        reverseList.add(val);
    }

for(int i=0;i当您浏览列表时,您将用末尾的值覆盖前半部分的值,从而丢失这些早期值。当您进入列表的后半部分时,前半部分中的原始值将不再存在

尝试使用交换逻辑(在每次迭代中交换两个元素),并且只完成列表的一半:

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);
    }
}
public void reverse(){
int半=大小/2;
对于(int i=0;i

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

请不要告诉我们您想要什么。告诉我们您尝试了什么以及为什么不起作用。好的,删除我的评论,但不要注意我添加了代码。@Gabrielyannahmias,现在比以前好。但一旦您提出具体问题,我将投票支持重新打开:)别紧张。首先尝试调试,然后查看
集合的实现。反转(列表)
。对不起;我的脸被感染了,心情不好。现在怎么样?很好,虽然我想我更喜欢另一种。但我还是不明白为什么在链接列表中会出现这种情况:(非常彻底,我对此表示感谢)。