「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」
LeetCode24.两两交换链表中的节点
题目要求
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换
示例
输入:head = [1,2,3,4]输出:[2,1,4,3]
思路
声明一个dummy来指向头部,然后用一个p指针指向这个节点(dummy),然后就可以交换指针的后面两个元素的位置了
代码部分
var swapPairs = function(head) {
let dummy = new ListNode();
dummy.next = head;
let p = dummy;
// 保证接下来要移动的两个元素是有意义的值,否则就不用再移动了 while (p.next && p.next.next) {
let n1 = p.next;
let n2 = p.next.next;
// 实际上的交换操作
p.next = n1.next;
n1.next = n2.next;
n2.next = n1;
// p指针向后移动,移动到即将要变换的两个元素的前面
p = n1;
}
return dummy.next; //最后要返回的是dummy.next 而不是dummy
};