24. 两两交换链表中的节点
题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题思路
利用辅助节点。添加一个哨兵节点,利用哨兵节点进行循环判断,每次循环进行对应节点指针的变换。
代码
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var swapPairs = function (head) {
let tempHead = new ListNode(0);
tempHead.next = head;
let temp = tempHead;
while (temp.next != null && temp.next.next != null) {
let start = temp.next,
end = temp.next.next;
temp.next = end;
start.next = end.next;
end.next = start;
temp = start;
}
return tempHead.next;
};