-->1-->4-->3-->6-->5-->8-->7-->10-->9-->尾
链表类 -
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 中链接列表中的备用节点。
输出 - 2
您需要交换两个元素(如果列表中至少有两个),然后继续下一对。
你的方法目前是这样做的:1)转到列表的最末尾(通过前递归),然后2)当你走向列表的前面时交换元素(当你进入递归调用链时)。 这样做的结果是反转列表
你需要这样的东西:1)如果列表中至少有两个元素(L
,L.next
有效)交换两个元素,然后2)进一步进行两个元素并重复(例如 alternateListswap(L.next.next);
)