24. 两两交换链表中的节点

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
定位要交换的节点,交换逻辑,之后更新下一个要交换的开始节点。
public ListNode swapPairs(ListNode head) {
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode cur = head;
// 需要一个前驱节点,因为交换,后一个节点之后第一个节点后,前驱要和后一个节点连接。
ListNode prev = dummyHead;
while(cur != null) {
if(cur.next == null) {
break;
}
ListNode node = cur;
ListNode next = cur.next;
// 下一个要交换的开始节点
cur = cur.next.next;
// 删除第二个节点
node.next = cur;
next.next = null;
// 第二个节点执行第一个节点
next.next = node;
// 前驱指向插入的节点,成为链
prev.next = next;
// 最后一个步,更新前驱节点。
prev = node;
}
return dummyHead.next;
}
浙公网安备 33010602011771号