思路
交换本身没有难度,注意处理三种情况:
- 如果不是前两个节点的交换,需要将前面的节点和后面的节点连接起来
- 当节点本身或其 next 为 null 时,交换结束
- 当有交换发生时,头节点的位置发生了变化,需要记录新的头节点
var swapPairs = function (head) {
let cur = head,
prev = null;
const newHead = head?.next ? head.next : head;
while (cur !== null && cur.next !== null) {
const next = cur.next;
cur.next = cur.next.next;
next.next = cur;
if (prev) prev.next = next;
prev = cur;
cur = cur.next;
}
return newHead;
};