24. 两两交换链表中的节点

LeetCode 原题链接 image.png

实现思路

  • 定义一个 dummy 节点指向 head,这样可以方便地处理交换头节点的情况。
  • 定义一个指针 p 从 dummy 开始遍历链表,检查 p.next 和 p.next.next 是否存在。
  • 如果存在,则将 p.next 和 p.next.next 交换位置。
  • 交换完成后将 p 向后移动两位,继续检查下一个节点。

代码实现

var swapPairs = function (head) {
  const dummy = new ListNode(0, head);
  let p = dummy;

  while (p.next && p.next.next) {
    const pre = p.next;
    const cur = p.next.next;

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

    p.next = cur;
    p = pre;
  }

  return dummy.next;
};