在java中反转linkedlist中的备用节点的代码

在java中反转linkedlist中的备用节点的代码,java,data-structures,linked-list,Java,Data Structures,Linked List,链表类- class MyList{ int val; MyList next; MyList(int val){ this.val = val; } @Override public String toString() { MyList current = this; String out=""; wh

链表类-

class MyList{
        int val;
        MyList next;
        MyList(int val){
            this.val = val;
        }

        @Override
        public String toString() {
            MyList current = this;
            String out="";
            while(current != null){
                out += current.val+"-->";
                current = current.next;
            }


            return out+"TAIL";
        }
    }
我试过了,效果很好-

MyList list3 = list;
    MyList list4 = list.next;
    while(list3!=null && list4!=null){  
        alternateListswap(list3,list4);
        if(list3.next.next==null || list4.next.next==null)
            break;
        list3 = (list3.next.next==null)?null:list3.next.next;
        list4 = (list4.next.next==null)?null:list4.next.next;
    }


private static MyList alternateListswap(MyList L3, MyList L4) {
        int temp = L4.val;
        L4.val = L3.val;
        L3.val = temp;
        return L3;

    }
我的意见-

MyList list = new MyList(1);
        list.next = new MyList(2);
        list.next.next = new MyList(3);
        list.next.next.next = new MyList(4);
        list.next.next.next.next = new MyList(5);
        list.next.next.next.next.next = new MyList(6);
        list.next.next.next.next.next.next = new MyList(7);
        list.next.next.next.next.next.next.next = new MyList(8);
        list.next.next.next.next.next.next.next.next = new MyList(9);
        list.next.next.next.next.next.next.next.next.next = new MyList(10);
我的列表输出为-1-->2-->3-->4-->5-->6-->7-->8-->9-->10-->尾部

现在我想在JAVA中交换LinkedList中的备用节点


导出的输出-2-->1-->4-->3-->6-->5-->8-->7-->10-->9-->TAIL

您需要交换两个元素(如果列表中至少有两个),然后继续下一对

您的方法目前是这样做的:1)转到列表的最末端(通过前端递归),然后2)在走向列表前端时交换元素(在递归调用链的上游)。这样做的结果是颠倒列表


你需要这样的东西:1)如果列表中至少有两个元素(
L
L.next
是有效的)交换这两个元素,然后2)继续两个元素并重复(例如
alternateListswap(L.next.next);

你能给出一个预期输出的例子吗?我知道我需要做什么,但是如何实现是个问题…我按照你的建议尝试了,现在的问题是我没有得到增加列表的实际方法。下一次,每次都意味着过程2受到影响,更新了问题中的我的解决方案。你没有实现我的建议。现在您正在将第一个元素与列表中的每一个其他元素交换。明白了,我只增加一个计数器,而不是第二个,需要在第二个计数器上工作,但我正在做int list=list。下一步,我也将失去以前的节点。
list=list.next.next