题目:
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
思路:
先创建一个new listnode dummy作为第一个也是curr。
这道题要分奇数和偶数和情况。三个为一组。
所以cur.next和cur.next.next都不能是空的。
以12为例,cur等于0。
循环的时候先建立一个a储存cur.next就是1。
然后curr的下两个就是2 给cur.next 1。
然后a.next的下一个是3.就是a.next = a.next.next。(注意!)
再把1给2后面。就是cur.next .next。= a。
Code:
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode curr = dummy;
while(curr.next!=null && curr.next.next!=null){
swap(curr);
curr = curr.next.next;
}
return dummy.next;
} public void swap(ListNode prenode){
ListNode a = prenode.next;
prenode.next = prenode.next.next;
a.next = a.next.next;
prenode.next.next = a;
}