LeetCode第24题:交换链表节点
这道题主要在于引入一个额外链表,指向交换后的头部即可轻松实现
/**
* 处理方式,例如节点 1 2 3
* 首先定义link节点初始为空,之后cur=1,head=2.交换指针后组成link->head(2)->cur(1)。即2 1 3
* 再往后cur移到3节点,link移到换后的1节点,重复上述动作即可
*/
public ListNode swapPairs(ListNode head) {
ListNode node = new ListNode(0, head);
// 当前处理节点的前置节点,用于指向当前处理后的head
ListNode link = node;
// 当前处理节点
ListNode cur = head;
while (cur != null && cur.next != null) {
head = cur.next;
cur.next = cur.next.next;
head.next = cur;
link.next = head;
cur = head.next.next;
link = head.next;
}
return node.next;
}