题目
注意
- 首先链表相连的时候不能出现环
- 一个节点的next可以是null,但是想要增加头节点的话必须用new ListNode。
思路
代码
/**
* 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 pre = new ListNode(0, head);
//pointer是因为pre以后会被指到其他位置,需要使用另一个来指示
let pointer = pre;
//next是为了保留处在图中3位置的节点
let next = null;
let cur = head;
while(cur && cur.next){
next = cur.next.next; //保留在第三位置的节点以便重新连接
pre.next = cur.next; //图中的2是一个没有指针的节点,所以把它连到pre后边
cur.next = next;
pre.next.next = cur;
pre = cur;
cur = cur.next;
}
return pointer.next;
};