Given a linked list, swap every two adjacent nodes and return its head.
 
For example,
Given1-> 2-> 3-> 4, you should return the list as2-> 1-> 4-> 3.
 
Your algorithm shocould use only constant space. You mayNotModify the values in the list, only nodes itself can be changed.
 
Https://oj.leetcode.com/problems/swap-nodes-in-pairs/
 
Train of Thought: Simulate the question and perform the operation carefully.
 
 
 - Added dummyhead to facilitate processing;
  
 - The operation node must retain the pointer of the previous node.
   
 
 
 
Code:
 
public class Solution {    public ListNode swapPairs(ListNode head) {        if (head == null)            return null;        ListNode dummyHead = new ListNode(-1);        dummyHead.next = head;        ListNode pre = dummyHead;        while (pre != null && pre.next != null && pre.next.next != null) {            ListNode q = pre.next;            ListNode r = q.next;            pre.next = r;            q.next = r.next;            r.next = q;            pre = pre.next.next;        }        return dummyHead.next;    }    public static void main(String[] args) {        ListNode list = ListUtils.makeList(1, 2, 3, 4, 5);        ListUtils.printList(list);        ListUtils.printList(new Solution().swapPairs(list));    }}