# [24] 两两交换链表中的节点

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

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

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

对链表交换相邻节点的问题,我们还是按照普通对链表遍历的处理即可(即先加头结点遍历直到节点判空结束)。

因为是节点交换,因此需要交换的两个节点都必须有值,因此,当cur或者next任何一个没有值就可以结束循环了。

var swapPairs = function(head) {
  const dummy = new ListNode(null);
  dummy.next = head;
  let pre = dummy;
  while (pre.next && pre.next.next) {
    const cur = pre.next;
    const next = cur.next;

    pre.next = next;
    cur.next = next.next;
    next.next = cur;

    pre = cur;
  }
  return dummy.next;
};

function ListNode(val) {
  this.val = val;
  this.next = null;
}