24. 两两交换链表中的节点
很符合逻辑的写法,就是记录要交换两个节点之前的那个节点。
需要注意的点就是链表常见的空的问题,这题使用短路方式来判断,pre节点之后必须有两个节点才交换
while (pre.next != null && pre.next.next != null) {}
做个谨慎的人,在写链表相关时候要注意别跳入空的陷阱
public ListNode swapPairs(ListNode head) {
ListNode pre0 = new ListNode(-1);
pre0.next = head;
ListNode pre = pre0;
while (pre.next != null && pre.next.next != null) {
ListNode n1 = pre.next;
pre.next = n1.next;
n1.next = pre.next.next;
pre.next.next = n1;
pre = pre.next.next;
}
return pre0.next;
}