思路:链表中两两节点的交换,所以如果链表为空或者只有一个节点的,只返回其本身,获取当前节点,让当前节点等于当前节点的下一个节点,让下一个节点等于当前节点,最后返回当前节点。
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function(head) {
// 当传入的值为空的时候 或者 当前节点没有下一个节点了
if(head === null || head.next === null){
return head;
}
let next = head.next; // 记录当前节点的下一个节点
head.next = swapPairs(next.next); // 当前节点等于当前节点的下一个节点
next.next = head; // 当前节点的下一个节点等于当前节点
return next;
};