• 描述

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 

  • 示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
  • Solution
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode swapPairs(ListNode head) {
        ListNode pre = new ListNode(0);
	pre.next = head;
	ListNode temp = pre;
	while(temp.next != null && temp.next.next != null){
		ListNode start = temp.next;
		ListNode end = temp.next.next;
		temp.next = end;
		start.next = end.next;
		end.next = start;
		temp = start;
	}
	return pre.next;
    }
}
start:

temp = 0->7->2->4->3

// ListNode start = temp.next;
start = 7->2->4->3

// ListNode end = temp.next.next;
end = 2->4->3

// temp.next = end;
temp = 0->2->4->3

// start.next = end.next;
start = 7->4->3

// end.next = start;
end = 2->7->4->3

end: