[英]code to reverse alternate nodes in a linkedlist in java
鏈表類-
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-> TAIL
現在,我想交換JAVA中LinkedList中的備用節點。
預期輸出-2-> 1-> 4-> 3-> 6-> 5-> 8-> 7-> 10-> 9-> TAIL
您需要交換兩個元素(如果列表中至少有兩個),然后繼續進行下一個對。
您目前的方法是這樣做的:1)轉到列表的最末端(通過front-recursion),然后2)朝列表的最前面交換元素(沿着遞歸調用鏈)。 這樣的結果是反轉列表
您需要這樣的操作:1)如果列表中至少有兩個元素( L
, L.next
有效)交換兩個元素,則2)進一步處理兩個元素並重復(例如, alternateListswap(L.next.next);
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.