原题链接:leetcode24
题目描述:将链表中的每两个结点进行交换位置
思路:
/**
* 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 nhead = new ListNode(0, head)
// 这里只定义一个移动指针,需要的在循环里定义
let prev = nhead
// let cur = nhead.next
// 这里需要pre的next 和pre的next的next 所以要对只进行判断
while (prev.next && prev.next.next) {
let cur = prev.next
let next = cur.next
prev.next = next
cur.next = next.next
next.next = cur
// 交换之后,移动结点
prev = cur //这个位置需要注意
console.log(prev, 'pre')
}
return nhead.next
};